【问题标题】:Search if an element exists in a associative array搜索关联数组中是否存在元素
【发布时间】:2013-06-27 11:43:32
【问题描述】:

我有一个循环如下:

for( $m = 0; $m < count( $spcl_holiday_list_r ); $m++ )
{

    $region_str = $spcl_holiday_list_r[$m]['region'];

    $region_arr =  explode(",",$region_str);

    var_dump( $region_arr ) ;

    if( in_array( $hq_id , $region_arr ) )
    {
        $special_holidays += $special_holidays;
    }
}
}
echo $special_holidays;

var_dump( $region_arr ) 显示:

array
  0 => string '2' (length=1)
  1 => string '4' (length=1)
  2 => string '5' (length=1)
  3 => string '7' (length=1)
  4 => string '10' (length=2)
array
  0 => string '3' (length=1)
array
  0 => string '10' (length=2)

in_array( $hq_id , $region_arr ) 总是返回 FALSE !所以我想知道函数in_array()是如何实现关联数组的?查看我的数组输出和要求,array_key_exists 也不适合我。

【问题讨论】:

  • 如果返回false,那是因为数组中不存在$hq_id。那么var_dump($hq_id) 呢?此外,您应该更喜欢 foreach 而不是 for,除非有理由使用后者(大多数时候没有)。
  • hq_id 在这种情况下是 10。所以我希望总数为2
  • var_dump($hq_id) -- 请不要让我乞求。
  • 你试过array_walk_recursive了吗?
  • $special_holidays += $special_holidays; = 0 + 0 + 0 + ...

标签: php arrays associative-array


【解决方案1】:

我认为您想改用 array_search()。 注意返回值可能是布尔值

if ( array_search($hq_id , $region_arr) !== FALSE )

PHP Manual array)search()

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    相关资源
    最近更新 更多