edge
October 5, 2022, 8:40am
1
Hi,
I want to loop the PHP multi-dimensional array in smarty, I tried the different solutions but nothing worked.
Any idea?
My array
Array
(
[0] => Array
(
[0] => Position1
[1] => NAME1
[2] => IMAGE1
[3] => URL1
)
[1] => Array
(
[0] => Position2
[1] => NAME2
[2] => IMAGE2
[3] => URL2
)
[2] => Array
(
[0] => Position3
[1] => NAME3
[2] => IMAGE3
[3] => URL3
)
)
Expected Output
<ul>
<li>Position1</li>
<li>NAME1</li>
<li>IMAGE1</li>
<li>URL1</li>
<ul>
<ul >
<li>Position2</li>
<li>NAME2</li>
<li>IMAGE2</li>
<li>URL2</li>
<ul>
<ul >
<li>Position3</li>
<li>NAME3</li>
<li>IMAGE3</li>
<li>URL3</li>
<ul>
// Below code show same item 4 times instead 1 item in array. Any idea how to show list of items.
{foreach from=$list_array key=parent_key item=parent_item}
{foreach from=$parent_item key=child_key item=child_item}
<ul>
<li>{$child_item}</li>
<li>{$child_item}</li>
<li>{$child_item}</li>
<li>{$child_item}</li>
<ul>
{/foreach}
{/foreach}
Should work -
{foreach $list_array as $parent_item}
<ul>
{foreach $parent_item as $child_item}
<li>{$child_item}</li>
{/foreach}
</ul>
{/foreach}
edge
October 5, 2022, 6:26pm
3
Thanks for support.
It is showing only first item and not all all values in UI and LI Integration.
I checked the solution in below snippet and it is showing 1 values 4 times
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{foreach $list_array as $parent_item}
{foreach $parent_item as $child_item}
{
"@type": "ListItem",
"position": {$child_item},
"name": "{$child_item|escape:'htmlall':'UTF-8'}",
"image": "{$child_item|escape:'htmlall':'UTF-8'}",
"url": "{$child_item|escape:'htmlall':'UTF-8'}"
}
{/foreach}
{/foreach}
]
}
</script>
It shows below output with wrong output as below
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "1",
"image": "1",
"url": "1"
}
{
"@type": "ListItem",
"position": name,
"name": "name",
"image": "name",
"url": "name"
}
{
"@type": "ListItem",
"position": URL,
"name": "URL",
"image": "URL",
"url": "URL"
}
{
"@type": "ListItem",
"position": image,
"name": "image",
"image": "image",
"url": "image"
}
]
}
</script>
SamA74
October 5, 2022, 6:30pm
4
In your original post you were creating an HTML list.
But now you are outputting JSON data, for that use json_encode()
edge
October 5, 2022, 7:09pm
5
I was working to loop an array in the HTML list and schema list items. I shared the HTML list because I thought it will be easy to implement as compared to schema list items.
I want to loop array and create dynamic items list in schema
SamA74
October 5, 2022, 7:14pm
6
The json_encode()
function will take an array, an object, or array of objects and turn them into JSON data without any need for loops. So long as the array/object is formatted correctly, it is very easy to get JSON data this way.
edge
October 5, 2022, 7:45pm
7
Thanks. Key value array work,now working to create key value array dynamically.
https://www.w3schools.com/Php/func_json_encode.asp
edge
October 6, 2022, 10:41am
9
The array loop work is done, I am facing other issue which gives invalid URL
These values in the URL making it invalid "\/\/" and "\/"
http:\/\/localhost:89\/apps\/ps1624\/en\/summer-dresses\/5-printed-summer-dress
SamA74
October 6, 2022, 5:06pm
10
I’m not familiar with Smarty, but I assume this is coming from the escaping.
edge
October 6, 2022, 7:15pm
11
Thanks for your support. The problem is solved. The localhost website was giving an error but the live website does not give an error.
system
Closed
January 6, 2023, 2:16am
12
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.