1

PHP中是否有可能通过它的值来获取数组元素。我不想做的是在不知道键但现在知道它的值的情况下更新元素:

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

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

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

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

4

3 回答 3

3

您正在寻找array_search()

if(false!==($key = array_search(123, $translations)))
{
   $translations[$key] = 0;
}

- 请注意,值可以是非唯一的,因此array_search()只会找到第一个键。如果您需要所有这些,则必须遍历数组foreach或使用类似array_walk()

于 2013-10-16T12:49:57.540 回答
0

你应该使用这个:

$translations[array_search('123',  $translations)] = 0;

编辑:使用 Alma Do Mundo 提出的解决方案,他对检查返回值是正确的

于 2013-10-16T12:52:27.683 回答
0

你也可以这样做。

使用带有 search_values 参数的 array_keys 函数。它将为您提供具有这些值的键数组。然后您可以根据新数组更新原始数组。

它也会处理所有重复的值。

$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;
 }
 }
于 2013-10-16T13:10:42.120 回答