我有一个带有索引的数组。索引不是静态的,并且会不断变化。
$fields = [
11 => array (
'fieldId' => 'ORStreet',
'type' => 'TEXT',
'value' => 'Postbus 52',
),
];
上面一个的索引是11。但是有时它变成一个不同的数字。 始终保持不变的一件事是fieldId。我如何只知道字段ID即可获得此数组的索引。
上面的数组是名为“ fields”的主数组的子级。
在我的头上,我有这样的东西:
如果发现带有fieliD => ORStreet的数组,则遍历称为fields的主数组。返回该数组的索引。
如果不可能以这种方式获取索引,我不会介意我是否获得了'value'=>'Postbus52'密钥对。
答案 0 :(得分:1)
答案 1 :(得分:1)
<?php
$arr = [
[
'fieldId' => 'ORStreet',
'type' => 'TEXT',
'value' => 'Postbus 52',
],
[
'fieldId' => 'vbnm',
'type' => 'TEXT',
'value' => 'Postbus 52',
],
[
'fieldId' => 'ORStreet',
'type' => 'TEXT',
'value' => 'Postbus 52',
]
];
shuffle($arr);
foreach ($arr as $key => $value) {
if(array_key_exists("fieldId", $value) && $value["fieldId"] === "ORStreet"){
echo $key;
break;
}
}
?>
我已经使用shuffle
方法来模拟数组的随机性。然后,我遍历数组以将fieldId
与指定值(ORStreet)进行匹配。如果匹配,则循环将终止并显示索引。
另一种方式:
$filteredArr = array_pop(array_filter($arr, function ($a){
return array_key_exists("fieldId", $a) && $a["fieldId"] === "ORStreet";
}));
答案 2 :(得分:1)
另一种可能性:
$result = array_keys(
array_combine(array_keys($fields), array_column($fields, "fieldId")),
"ORStreet"
);
array_column()
提取所有fieldId
的值,然后array_keys()
搜索所需的值,并返回相关的数组键。
请注意,这将返回键数组。如果只需要第一个键,它将以整数形式返回它:
$result = array_search(
"ORStreet",
array_combine(array_keys($fields), array_column($fields, "fieldId"))
);