Jump to content
  • 0

Цикл foreach


Bryant-24
 Share

Question

Имеется массив:

Array
(
[ID] => Array
(
[0] => 100
[1] => 200
[2] => 300
)

[NAME] => Array
(
[0] => Компания 1
[1] => Компания 2
[2] => Компания 3
)

[DETAIL_PAGE] => Array
(
[0] => /Путь до копании 1/
[1] => /Путь до копании 2/
[2] => /Путь до копании 3/
)

)

Как с помощью цикла foreach сделать массив следующего вида:

Array
[100] =>
[Компания 1]
[/Путь до копании 1/]
[200] =>
[Компания 2]
[/Путь до копании 2/]
[300] =>
[Компания 3]
[/Путь до копании 3/]

Думаю это нужно сделать при помощи цикла foreach (array_expression as $key => $value), но вот как именно?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0
foreach ($a['id'] as $id => $val)
$b[$val][] = $a['name'][$id];
$b[$val][] = $a['detail_page'][$id];

Это если твои квадратные скобки означают элемент массива, а то может быть и так:

foreach ($a['id'] as $id)
$b[$val] = array($a['name'][$id]], $a['detail_page'][$id]);

  • Like 1
Link to comment
Share on other sites

  • 0

Да, спасибо! Второй вариант мне подошел.

Только там чуть-чуть не точно:

foreach ($a['id'] as $id => $val)
{
$b[$val] = array($a['name'][$id], $a['detail_page'][$id]);
}

Добавил =>$val как в первом примере.

И убрал лишнюю квадратную скобку во второй строке, но это мелочи.

Спасибо еще раз, плюсанул)))

Edited by Bryant-24
Link to comment
Share on other sites

  • 0

Появился еще один вопрос, новую тему решил не создавать.

Имеем какой-то массив№1:

Array
[100] =>
[Компания 1]
[/Путь до копании 1/]
[200] =>
[Компания 2]
[/Путь до копании 2/]
[300] =>
[Компания 3]
[/Путь до копании 3/]

И массив№2:

Array
[Филиал 1] =>
[100]
[Филиал 2] =>
[200]
[Филиал 3] =>
[300]

И собственно вопрос - как мне сравнить эти два массива и записать во второй массив данные из первого, если данные по ключам у них совпали.

Т.е. чтобы массив№2 принял вид:

Array
[Филиал 1] =>
[100]
[Компания 1]
[/Путь до копании 1/]
[Филиал 2] =>
[200]
[Компания 2]
[/Путь до копании 2/]
[Филиал 3] =>
[300]
[Компания 3]
[/Путь до копании 3/]

Link to comment
Share on other sites

  • 0

Ну вот наверно как-то так навскидку. Писал прям тут не проверяя. (возможны ошибки!!!)


foreach($mas2 as $key=>$value) {

if (isset($mas1[$value])) {
$mas3[$key][] = $value;
foreach($mas1[$value] as $mas1_value) $mas3[$key][] = $mas1_value;
}
}

  • Like 1
Link to comment
Share on other sites

  • 0

А нет ли возможности записать данные из массива №1 все-таки в массив №2? Просто в массиве №2 помимо этого содержатся еще данные, которые я не обозначил, а переписывать весь массив в другой нельзя.

Link to comment
Share on other sites

  • 0

Заставили вы меня всё-таки запустить этот пример, да накосячил, недодумал, исправил


<?php

$mas1 = array( 100 => array('Компания 1', '/Путь до копании 1/'),
200 => array('Компания 2', '/Путь до копании 2/'),
300 => array('Компания 3', '/Путь до копании 3/')
);

$mas2 = array('Филиал 1' => 100,
'Филиал 2' => 200,
'Филиал 3' => 300
);
Echo "mas1:<pre>".print_r($mas1, true)."</pre>";
Echo "mas2:<pre>".print_r($mas2, true)."</pre>";

foreach($mas2 as $key=>$value) {

if (isset($mas1[$value])) {
$mas2[$key] = array($value);
foreach($mas1[$value] as $mas1_value)
$mas2[$key][] = $mas1_value;
}
}

Echo "mas2:<pre>".print_r($mas2, true)."</pre>";
?>

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy