Intereting Posts
Как я могу сократить этот спам, и в чем его смысл? Почему, если я помещаю «-» тире в правило в моем htaccess, не работает? Как перенаправить правильный URL после входа в систему Можете ли вы связать вызовы модели в CodeIgniter Запуск exe на сервере Проверка доступности имени пользователя с использованием AJAX и PHP для MSSQL Добавление результатов базы данных в массив Как заставить работать ссылки, независимо от местоположения в структуре каталогов? Неопределенное свойство: stdClass :: $ GetDataResult Сообщение об ошибке нужна помощь при размещении на стене пользователя Динамическое изменение позиции корзины не работает с заказами в WooCommerce 3.0+ PHP Переключение между двумя переменными одинаково без использования базы данных Как написать триггер, который сбрасывает значение поля через 30 дней? Почему существует постоянная PATH_SEPARATOR? Присоединиться к трем таблицам

Другой вопрос, связанный с циклом php-массива

Борьба с этим за то, что кажется, как всегда.

У меня есть массив:

$url_array 

Он содержит эту информацию:

 Array ( [ppp] => Array ( [0] => stdClass Object ( [id] => 46660 [entity_id] => 0 [redirect_url] => http://www.google.com [type] => Image ) [1] => stdClass Object ( [id] => 52662 [entity_id] => 0 [pixel_redirect_url] => http://www.yahoo.com [type] => Image ) [2] => stdClass Object ( [id] => 53877 [entity_id] => 0 [redirect_url] => http://www.msn.com [pixel_type] => Image ) ) [total_count] => 3 ) 

Мне нужно пройти через него и делать вещи каждой переменной. Я могу заставить это работать:

 foreach ($piggies_array as $key => $value) { $id = $value[0]->id; $redirect_url = $value[0]->redirect_url; } 

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

 $value->redirect_url; $value=>redirect_url; 

Буду признателен за любую помощь.

Это должно сделать трюк:

 foreach ($url_array['ppp'] as $key => $object) { echo $object->redirect_url; } 

Вам нужно пройти через массив дважды.

 foreach($piggies as $piggy) { foreach($piggy as $key=>$value) { $id = $value->id; $redirect_url = $value->redirect_url; } } 

ваше значение $ id = $ value [0] -> id, которое будет выполнять только статуты для элемента 0

вам нужно для loo

 for($i = 0; $i < count($piggies_array['ppp']); $i++) { $id = $value[$i]->id; $redirect_url = $value[$i]->redirect_url; } 

Ваш массив содержит другой массив, вызывая $value[0] вы запрашиваете только первый элемент во втором массиве. Вам понадобятся два цикла, не забывая, что значение может не быть массивом:

  foreach ($piggies as $var) { if (is_array($var)) { foreach ($var as $obj) { echo $obj->redirect_url; } } else { echo $var; } } 

Вышеупомянутый (не тестируемый) выводят каждый URL-адрес, а также выводит общий счетный элемент первого массива.

Вы выполняете итерацию по первому размеру массива, который имеет только элемент "ppp" . Проверьте свой код, и вы увидите, что вы действительно запрашиваете первый элемент массива, когда у вас есть 3 элемента.

Что вам нужно сделать, итерация в массив объектов ( $url_array["ppp"] ).

Когда вы сомневаетесь в том, что вы на самом деле выполняете, хороший способ начать отлаживать его, печатает каждый шаг итерации. Если вы сделаете это на примере, который вы опубликовали, вы увидите следующее:

 Array( [0] => stdClass [...], [1] => stdClass [...] ... ) 

делая это:

 foreach ($piggies_array as $key => $value) { var_dump($value); } 

Посмотрев на это, вы автоматически узнаете, в чем проблема. Итак, изменив его на:

 foreach ($piggies_array['ppp'] as $key => $value) { var_dump($value); } 

Вы получите нужный результат:

 Object ( id: ... ) Object ( id: ... ) Object ( id: ... ) 

Удачи!

loop, как это (при условии, что $piggies_array совпадает с $url_array вы сбросили):

 foreach ($piggies_array['ppp'] as $key => $value) { $id = $value->id; $redirect_url = $value->redirect_url; } 

и обратите внимание, потому что некоторые элементы в массиве «ppp» не будут иметь свойство redirect_url (hte second имеет свойство pixel_redirect_url.