我需要使用key/value
循环访问特定的foreach
关联数组作为变量。在key/value
中获取array
对所有数据不是问题。问题在于获得特定 key/value
。以下面的代码为例
<?php
$data = [
'person1' =>
[
'id' => 101,
'firstName' => 'John',
'LastName' => 'Smith'
],
'person2' =>
[
'id' => 102,
'firstName' => 'Mary',
'LastName' => 'Smart'
]
];
我可以通过以下代码在key/value
中获得array
对所有数据:
foreach($data as $firstKey => $firstValue){
foreach ($firstValue as $secondKey => $secondValue) {
echo $secondKey. ": ". $secondValue . "<br />";
}
}
上面的代码并不是我想要的。
我希望获得具体的key/value
,例如,我只想获得id
s的键/值。
所以我尝试过这样的事情:
$specificId = null;
foreach($data as $firstKey => $firstValue){
foreach ($firstValue as $secondKey => $secondValue) {
if($secondKey == 'id'){ // using if statement to get key/value pair of person's id
$specificId = $secondValue; //storing the specific ids as variable
echo $secondKey . ": ". $specificId . "<br>";
}
}
}
?>
上面的代码似乎有效,但如果我还想仅key/value
获取firstName
,那么我必须编写另一个if
语句。
我最终会在if
循环中编写这么多foreach
个语句。你知道另一种方法我可以编写较少的代码来获得特定的key/value
对吗?
有很多像我这样的类似问题但我正在寻找的答案不是任何问题的目标。
答案 0 :(得分:3)
foreach($data as $firstKey => $firstValue) {
echo array_keys($firstValue, $firstValue['id'])[0].': '.$firstValue['id'].'</br>';
echo array_keys($firstValue, $firstValue['firstName'])[0].': '.$firstValue['firstName'].'</br>';
}
你可以从数组中调用关联数组键
输出键和值
答案 1 :(得分:0)
array_intersect_key应该可以正常工作:
$results=[];
foreach($data as $name => $attriubtesPerson)
{
$results[$name] = array_intersect_key($attributesPerson, ['id' => null, 'firstName' => null]);
}
文档可以找到here
答案 2 :(得分:0)
要访问特定的键值,您需要将数组转换为Json并像普通对象一样对其进行访问。
$data = [
'person1' =>
[
'id' => 101,
'firstName' => 'John',
'LastName' => 'Smith'
],
'person2' =>
[
'id' => 102,
'firstName' => 'Mary',
'LastName' => 'Smart'
]
];
$obj = json_decode(json_encode($data));
//to access key=values directly
echo $obj->person1->firstname;
//to access all firstname only
foreach($obj as $o){
echo $o->firstName;
}