PHP foreach 循环键值
Posted
技术标签:
【中文标题】PHP foreach 循环键值【英文标题】:PHP foreach loop key value 【发布时间】:2010-12-22 12:36:33 【问题描述】:我正在运行这个 DB 调用来获取多维数组 我正在尝试获取每个的键,但是当我尝试时它出现空白或作为数组。
$root_array = array();
$sites = $this->sites($member_id);
foreach ($sites as $site)
$records = $this->db->select('p.name as place_name, p.id as place_id,p.active as place_status')
->from('places p')
->join('members_permissions pm','pm.sites_id = p.sites_id and pm.members_id ='.$member_id)
->where('p.active', 0)
->get();
$places = $records->result_array();
$places['name'] = $site['name'];
foreach($places as $place)
$root_array[$site['name']][] = $place;
return $root_array;
这是我循环的php:
<?php foreach($places as $site): ?>
<h5><?=key($site)?></h5>
<?php foreach($site as $place): ?>
<h6><?=$place['place_name']?></h6>
<?php endforeach?>
<?php endforeach ?>
另外,当我运行一个只吐出数组的测试时,结果就是这样, 我要渲染的是 [Philadelphia]
[Philadelphia] => Array
(
[0] => Array
(
[place_name] => XYX
[place_id] => 103200
[place_status] => 0
)
[1] => Array
(
[place_name] => YYYY
[place_id] => 232323
[place_status] => 0
)
【问题讨论】:
【参考方案1】:你可以像这样访问你的数组键:
foreach ($array as $key => $value)
【讨论】:
这个方法只返回'array' 如果你回显 $key 怎么办?不。如果您在Philadelphia
是其键的数组上运行它,则不会。你能显示一些代码吗?
这行得通,我的 mysql 语句也有一个小问题,但我得到了它与你的解决方案一起工作,谢谢。【参考方案2】:
如上所述,佩卡
foreach ($array as $key => $value)
你也可以试试递归函数
displayRecursiveResults($site);
function displayRecursiveResults($arrayObject)
foreach($arrayObject as $key=>$data)
if(is_array($data))
displayRecursiveResults($data);
elseif(is_object($data))
displayRecursiveResults($data);
else
echo "Key: ".$key." Data: ".$data."<br />";
【讨论】:
【参考方案3】:您也可以使用 array_keys()
。新手友好:
$keys = array_keys($arrayToWalk);
$arraySize = count($arrayToWalk);
for($i=0; $i < $arraySize; $i++)
echo '<option value="' . $keys[$i] . '">' . $arrayToWalk[$keys[$i]] . '</option>';
【讨论】:
拥有$keys
后,代码更简单更高效:foreach ($keys as $key) ... $key ... $arrayToWalk[$key] ...
当$keys
可能只是数组中的几个键时,这很有用 - 否则foreach ($arrayToWalk as $key => $value) ...
更易于使用并且稍微快一点。【参考方案4】:
foreach($shipmentarr as $index=>$val)
$additionalService = array();
foreach($additionalService[$index] as $key => $value)
array_push($additionalService,$value);
【讨论】:
以上是关于PHP foreach 循环键值的主要内容,如果未能解决你的问题,请参考以下文章