Php 如何访问动态数组键和值
我已经动态创建了上面的数组。例如,firstName,电子邮件字段有时可能更改为4个元素,有时更改为12个元素。不确定如何访问键和相应的值。我无法确定数组的哪个部分应该是动态的,但以下是一些我认为可能是您的情况的示例:Php 如何访问动态数组键和值,php,Php,我已经动态创建了上面的数组。例如,firstName,电子邮件字段有时可能更改为4个元素,有时更改为12个元素。不确定如何访问键和相应的值。我无法确定数组的哪个部分应该是动态的,但以下是一些我认为可能是您的情况的示例: 密钥的存在,例如“email”是动态的,您希望找到包含该密钥的子数组 array:1 [▼ 0 => array:4 [▼ "firstName" => "val" "email" => "someval" "phone" => "so
array:1 [▼
0 => array:4 [▼
"firstName" => "val"
"email" => "someval"
"phone" => "someval"
"zip" => "someval"
]
]
您是否尝试过使用foreach(_数组为$key=>$value){…}?如Jimmy所建议,使用foreach,或者如果您知道该位置,请使用$firstname=$myArray[0]['firstname']@吉米亚达罗。是的,我试过了,但得到的值是0。我认为它是顶级索引键。@jannej。正如我提到的,firstName可能会在数组中更改。这是动态数组。firstName将更改为lastName或其他名称。这是未知的,因此您必须使用foreach()对其进行循环。最后,您必须检查一些值。您可以尝试访问第一个位置,如$myArray[0][0],但我不推荐这样做。
$data = [
[
'name' => 'Baz',
'email' => 'test@example.com',
],
[
'name' => 'Foo',
],
];
$dataWithEmail = [];
foreach ($data as $item) {
if (array_key_exists('email', $item)) {
$dataWithEmail[] = $item;
}
}
var_dump($dataWithEmail);
// alternatively you can use:
$dataWithEmail = [];
$dataWithEmail = array_filter(
$data,
function($item) {
return array_key_exists('email', $item);
}
);
var_dump($dataWithEmail);
$data = [
[
[
[
'name' => 'Bar',
'email' => 'bar@example.com',
],
],
],
[
[
'name' => 'Foo',
'email' => 'foo@example.com',
],
],
];
$emails = [];
array_walk_recursive(
$data,
function ($item, $key) use (&$emails) {
if ('email' === $key) {
$emails[] = $item;
}
}
);
var_dump($emails);
$data = [
[
'name' => 'Baz',
'email' => 'test@example.com',
],
[
'name' => 'Foo',
],
];
$onlyEntriesWithNames = array_filter(
$data,
function ($item) {
return array_key_exists('name', $item);
}
);
$namesFromArray = array_reduce(
$onlyEntriesWithNames,
function($carry, $item) {
$carry[] = $item['name'];
return $carry;
},
[]
);
var_dump($namesFromArray);