Ответ 1
Использование
//$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;
}
У меня есть массив объектов.
Результат 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 />';
}