php搜索数组,其中包含"key:value"项

Pin*_*kie 2 php arrays

如果我有一个看起来像这样的数组$输出,我怎么能搜索数组并回显持续时间值,在这种情况下是30.持续时间并不总是关键[18].

Array
(
    [16] =>     hasKeyframes    : true
    [17] =>     hasMetadata     : true
    [18] =>     duration        : 30
    [19] =>     audiosamplerate : 22000
    [20] =>     audiodatarate   : 68
    [21] =>     datasize        : 1103197
}
Run Code Online (Sandbox Code Playgroud)

ari*_*ayu 5

试试这个功能:

function search_value($array, $key, $default_value = false)
{
   foreach( $array as $value)
   {
      list($_key, $_val) = array_map('trim', explode(":", $value) );
      if( strtolower($key) == strtolower($_key) )
         return $_val;
   }
   return $default_value;
}
Run Code Online (Sandbox Code Playgroud)

像这样用它:

echo search_value( $output, 'duration', 0);
Run Code Online (Sandbox Code Playgroud)

,就像@Lawrence指出,这将是MUCH,如果你改变你的阵列结构更简单:

$output= array(
  'hasKeyframes'=>true,
  'hasMetadata'=>true,
  'duration'=>'30',
  .
  .
  .
);
Run Code Online (Sandbox Code Playgroud)

这样,您只需检查密钥是否存在并获取该值:

echo (!array_key_exists('duration', $output) ? $output['duration'] : 0);
Run Code Online (Sandbox Code Playgroud)