У меня есть массив объектов. Вывод print_r
выглядит следующим образом:
Array ( [0] => stdClass Object ( [sm_id] => 1 [c_id] => 1 ) [1] => stdClass Object ( [sm_id] => 1 [c_id] => 2 ) )
Я действительно изо всех сил пытаюсь найти способ петли, хотя результаты и доступ к элементам объекта. Если бы кто-нибудь мог дать мне какие-либо указания, я был бы чрезвычайно благодарен.
заранее спасибо
использование
//$arr should be array as you mentioned as below foreach($arr as $key=>$value){ echo $value->sm_id; }
ИЛИ
//$arr should be array as you mentioned as below foreach($arr as $value){ echo $value->sm_id; }
Зацикливание по массивам и объектам – довольно обычная задача, и хорошо, что вы хотите научиться этому. Вообще говоря, вы можете сделать цикл foreach
который циклически перемещается по каждому члену, назначая ему новое временное имя, а затем позволяет обрабатывать этот конкретный член с помощью этого имени:
foreach ($arr as $item) { echo $item->sm_id; }
В этом примере каждый из наших значений в $arr
будет доступен в виде $item
. Поэтому мы можем напрямую печатать наши ценности. Мы могли бы также включить индекс, если бы хотели:
foreach ($arr as $index => $item) { echo "Item at index {$index} has sm_id value {$item->sm_id}"; }
Рекурсивный объект перемещения или массив с элементами массива или объектов:
function traverse(&$objOrArray) { foreach ($objOrArray as $key => &$value) { if (is_array($value) || is_object($value)) { traverse($value); } else { // DO SOMETHING } } }
Предполагая, что ваши свойства sm_id
и c_id
являются общедоступными, вы можете получить к ним доступ, используя foreach
в массиве:
$array = array(/* objects in an array here */); foreach ($array as $obj) { echo $obj->sm_id . '<br />' . $obj->c_id . '<br />'; }