Sara Wassef Sara Wassef - 3 months ago 21
PHP Question

Iterate multidimensional array php

I am a newbie to php, i have the following multidimensional array in joomla.

I have the following array for example using print_r (because it is dynamic):

stdClass Object
(
[pressrelease_title] => Array
(
[0] => جريدة الفجر
[1] => جريدة الفجر
[2] => جريدة الوطن
[3] => جريدة أخبار اليوم
[4] => جريدة الشروق
[5] => صدى البلد
)

[pressrelease_url] => Array
(
[0] => url1
[1] => url2
[2] => url3
[3] => url4
[4] => url5
[5] => url6
)

[pressrelease_desc] => Array
(
[0] => بالصور.. وزير المالية يطلق الإصدار السنوي الثاني لـ "موازنة المواطن"
[1] => دميان: "موازنة المواطن" تفتح المجال لإشراك المواطنين في صياغة السياسات الاقتصادية
[2] => وزير المالية يطلق الإصدار السنوي الثاني لـ"موازنة المواطن"
[3] => بمشاركة ممثلين عن البنك الدولي و6 وزارات وخبراء المجتمع المدني.. الثلاثاء .. وزير المالية يطلق الإصدار السنوي الثاني لموازنة المواطن
[4] => وزير المالية: إصدار صكوك إسلامية لتلبية احتياجات شريحة جديدة من المدخرين
[5] => اليوم.. "المالية" تطلق إصدارها الثاني لموازنة المواطن
)

)


Below is a code to iterate on the press releases array. The problem it only shows 3 results not less not more.

<?php
//$press_releases= json_decode($params->get('repeated_press'),true);
$press_release = json_decode($attribs->repeated_press);

$press_n = count((array)$press_release);

for ($x = 0; $x < $press_n ; $x++) {
echo '<div class="press_item" id="press_item'.($x+1).'">';
echo '<div class="title">'.$press_release->pressrelease_title[$x].'</div>';
echo '<div class="url"><a target="_blank" href="'.$press_release->pressrelease_url[$x].'">'.$press_release->pressrelease_desc[$x].'</a></div>';
echo '</div>
';
}
?>

Answer

You want your count to be the number of elements in each array, not the number of arrays.

Change

$press_n = count((array)$press_release);

To

$press_n = count($press_release->pressrelease_title);

The 2nd line will count elements in the first member of $press_release (the first of your 3 array blocks)

Comments