我有一个多维数组如下:
Array
(
[lists] => Array
(
[0] => Array
(
[id] => 23ybdwhdwbed
[name] => TEST
(
[1] => Array
(
[id] => e223edsewed
[name] => TEST 2
(
)
)
我想访问ID&使用foreach循环命名变量。
我正在使用它:
$x = 0;
foreach($lists as $list){
$listId = $list[$x]['id'];
$listName = $list[$x]['name'];
echo"$x | $listId $listName <br />";
$x++;
}
由于一些奇怪的原因,我只能获得第一个$ listId&amp;的价值。 $ name,而不是第二个$ listId或$ name。
我在这里做错了什么?
答案 0 :(得分:2)
您假设您仍需要为每个子元素提供密钥。事实并非如此。
试
foreach($lists as $list){
$listId = $list['id'];
$listName = $list['name'];
$listId $listName <br />";
}
foreach()
将依次迭代它们。
如果您确实需要索引编号,请改为执行此操作。
foreach($lists as $x => $list){
其中$x
是索引。
答案 1 :(得分:1)
您发布的数组错误,因为它缺少结束)
,所以更正(我认为 TYPO 错误)
之后你需要这样做: -
foreach($lists['lists'] as $key=> $list){
$listId = $list['id'];
$listName = $list['name'];
echo "$key | $listId $listName <br />";
}
输出: - https://eval.in/846464
或单行代码: -
foreach($lists['lists'] as $key=> $list){
echo "$key | ".$list['id']." ".$list['name']." <br />";
}
输出: - https://eval.in/846465
答案 2 :(得分:0)
你的foreach
迭代多维数组的第一级,而不是第二级。
由于第一级只保留lists
数组作为唯一元素,因此循环只执行一次。
将lists
密钥传递给foreach
,如下所示:
$x = 0;
foreach($lists['lists'] as $list) {
echo "$x | " . $list['id'] . " " . $list['name'] . "<br />";
++$x;
}
另请注意我在这里如何按名称引用列表元素以便于阅读。
答案 3 :(得分:0)
我认为那些数字索引只会让你感到困惑,所以试试这个:
$my_array = array(array("id" => "23ybdwhdwbed", "name" => "TEST"), array("id" => "e223edsewed", "name" => "TEST 2"));
要访问值:使用:
foreach($my_array as $my_data){
echo "ID:" . $my_data["id"];
echo "<br>";
echo "NAME:" .$my_data["name"];
echo "<br><br>";
}
答案 4 :(得分:0)
你只需要这样做:
{{1}}
答案 5 :(得分:0)
尝试这个,我修复了你的数组结构,这也是动态的,所以你有多少数组无关紧要 - &gt;上述
SELECT ST_AsGeoJSON(ST_Transform(ST_Multi(ST_Union(coordinate)), 4326)) AS coordinate,
difference from stop_func(device_id, start_time, end_time) group by difference;