Top.Mail.Ru
Ответы
Аватар пользователя
10лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Как достать строки из массива, по типу foreach? php

Есть массив array()
В нем несколько строк с данными

Как вытащить эти массивы в одну переменную, как это делает цикл foreach?

В итоге надо вытащить из массива строку, в которой элемент id равен определенному числу, но не могу этого сделать, так как каждая строка имеет порядковый ключ

По дате
По рейтингу
Аватар пользователя
Мудрец
10лет

Пишу ответ через ~22 часа после того, как он задан. Надеюсь, не поздно.
Давай работатать по примерам. Скажем, есть такой array:

$array = array("1" => array("Name" => "ItemName1",
"id" => 89009,
"Description" => "some description of item",
"Something" => 1231
),
"2" => array("Name" => "ItemName2",
"id" => 101001,
"Description" => "some other description of item",
"Something" => 12323
),
);
// теперь нужно адресоваться к каждом подмассиву по ключу. Делается это так:

foreach($array as $key => $value ){
// если по ключу - массив, берём из него значение поля id
if(is_array($value)){
echo($value['id']."");
}
}

Аватар пользователя
Мастер
10лет

Если я правильно понял вопрос, надо что-то типа этого:

foreach($array as $item)
{
if ($item['id'] = число)
{
break;
}
}
echo $item['id'];

то есть, перебирать строки по порядку, сравнивать id с числом, и если нашли - то прервать цикл. в переменной $item будет искомая строка

но вообще, скорее всего задача изначально поставлена неверно.
Массив наверняка получен из БД
И если нам изначально нужна только эта строка, то только её и надо было запрашивать из базы.
А если нужны все строки, то получать их надо из БД так, чтобы массив был индексирован не по порядку, а по id.
и тогда нужная строка может быть получена просто как

$array[число]

Аватар пользователя
Просветленный
10лет

$result = false;
foreach ( $A as $e ) {
if ( ( isset($e['id']) && ($e['id'] == ???) ) {
$result = next($e); break;
}
}

Аватар пользователя
Гуру
10лет

$num = 5;

$id[$num];