PHP是否有可能通过它的值获取数组元素。我不想做的是更新一个元素,而不知道密钥,但现在它的值:
$translations = array(
"en" => 123,
"de" => 456,
"es" => 789,
"fr" => 901
);
我知道我不想做的事情可以用foreach循环完成:
foreach($translations as $lang=>$id):
if($id == 123) $translations[$lang] = 0;
endforeach;
但有没有可能避免这种循环并自动设置它?
答案 0 :(得分:3)
您正在寻找array_search():
if(false!==($key = array_search(123, $translations)))
{
$translations[$key] = 0;
}
- 请注意,值可以是非唯一的,因此array_search()
只会找到第一个键。如果您需要所有这些,则必须使用foreach
迭代数组或使用类似array_walk()
答案 1 :(得分:0)
你应该用这个:
$translations[array_search('123', $translations)] = 0;
编辑:使用Alma Do Mundo提出的解决方案,他是正确的检查返回值
答案 2 :(得分:0)
你也可以这样做。
将array_keys函数与search_values参数一起使用。它将为您提供具有这些值的键数组。然后,您可以根据新阵列更新原始阵列。
它还将处理所有重复值。
$translations = array(
"en" => 123,
"de" => 456,
"es" => 789,
"fr" => 901,
"it" => 123
);
$arr=array_keys($translations,$seach_value);
if(count($arr)){
foreach($arr as $key => $value){
$translations[$value]=$new_value;
}
}