Неожиданные результаты php foreach loop with array_column

Заранее благодарю за любую помощь! Я абсолютный новичок в php, но пытаюсь ладить.

У меня есть массив $ результат, который содержит что-то вроде:

Array
(
[0] => Array
(
[id] => xyz
[from] => Array
(
[name] => xyz
[id] => xyz
)

[link] => xyz
[name] => xyz
[picture] => xyz
[created_time] => xyz
)
[1] => Array
(
[id] => xyz
[from] => Array
(
[name] => xyz
[id] => xyz
)

[link] => xyz
[name] => xyz
[picture] => xyz
[created_time] => xyz
)

И так далее… .

Чего я хочу добиться, так это цикла foreach, который работает с некоторыми из этой информации. Пока я изменил код, чтобы просто выводить информацию, чтобы я мог видеть проблемы … Я думаю. Мой код:

foreach($result AS $buildresult) {
$resobjid = array_column($buildresult, 'id');
$cardpicurl = "https://graph.facebook.com/$resobjid/picture";
$heading = array_column($buildresult ['from'], 'name');
$para = array_column($buildresult, 'name');
$link = array_column($buildresult, 'link');
echo '<pre>' . print_r( $resobjid, 1 ) . '</pre><br>';
echo '<pre>' . print_r( $cardpicurl, 1 ) . '</pre><br>';
echo '<pre>' . print_r( $heading, 1 ) . '</pre><br>';
echo '<pre>' . print_r( $para, 1 ) . '</pre><br>';
echo '<pre>' . print_r( $link, 1 ) . '</pre><br>';
echo '<pre>' . print_r( $cardpicurl, 1 ) . '</pre><br>';
echo '<pre>' . print_r( $buildresult, 1 ) . '</pre><br>';
}

Я ожидаю, что это сделает что-то вроде:

The ID

https://graph.facebook.com/someidfromthearray/picture

Array
(
[0] => Some Name from the Array
)
Array
(
[0] => Some Name from the above array
)

Но то, что я получаю, это:

Array
(
[0] => 387639951329150
)

https://graph.facebook.com/Array/picture

Array
(
)

Array
(
[0] => Some.Name
)

Array
(
)

https://graph.facebook.com/Array/picture

Так что я получаю идентификатор и имя из массива «from». Остальное кажется пустым. А также https://graph.facebook.com/$resobjid/picture показывает «Массив», несмотря на то, что отображается правильно echo '<pre>' . print_r( $resobjid, 1 ) . '</pre><br>';

Любая помощь высоко ценится!

Большое спасибо! 🙂

0

Решение

вам не нужен array_column для адресации массивов, вы можете сделать это напрямую. Рассмотрим этот код:

    $result = array(
array('id' => 'id0',
'from' => array('name' => 'from_name0','id' => 'from_id0'),
'link' => 'link0',
'name' => 'name0',
'picture' => 'picture0',
'created_time' => 'created_time0'
),
array('id' => 'id1',
'from' => array('name' => 'from_name1','id' => 'from_id1'),
'link' => 'link1',
'name' => 'name1',
'picture' => 'picture1',
'created_time' => 'created_time1'
)
);
$resobjid = 'SOMETHING';
foreach($result AS $buildresult)
{
$cardpicurl = "https://graph.facebook.com/$resobjid/picture";

echo "<pre>\n";
echo 'The ' . $buildresult['id'] . "\n";
echo $cardpicurl . "\n";
echo $buildresult['from']['name'] . "\n";
echo $buildresult['name'] . "\n";
echo $buildresult['link'] . "\n";
echo $cardpicurl . "\n";
echo "</pre>\n<hr>\n";
}

Я изменил значения массива, чтобы сделать вывод легче для чтения и отладки, но я не изменил структуру.

Я получаю это:

введите описание изображения здесь

Вы не указали значение для $ resobjid, поэтому я установил что-то, чтобы избежать ошибок.
Кроме того, второй параметр для print_r используется, только если вы хотите присвоить результат некоторой переменной, например так:

$output = print_r($array,1);

Вам это не нужно здесь.
Я надеюсь, что это поможет, Ник.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector