以类似的方式获取数组元素,如通过$ key获取

时间:2013-10-16 12:48:12

标签: php arrays loops foreach

PHP是否有可能通过它的值获取数组元素。我不想做的是更新一个元素,而不知道密钥,但现在它的值:

 $translations = array(
     "en" => 123,
     "de" => 456,
     "es" => 789,
     "fr" => 901
 );

我知道我不想做的事情可以用foreach循环完成:

foreach($translations as $lang=>$id):
   if($id == 123) $translations[$lang] = 0;
endforeach;

但有没有可能避免这种循环并自动设置它?

3 个答案:

答案 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;
 }
 }