我有一个二维数组,想通过一个元素goods_id的值得到对应的其他元素的值
数组如下,知道goods_id = 123,如何得到goods_name,goods_price。
最简单的方法是?
$goods = array(
            0 => array('goods_id'    => 123, //goods_id
                'goods_name'  => 测试商品,    //商品名称
                'goods_price' => '12.10',       //商品价格
                'max_number'  => '5',           //限购数量
                'thumb_url'   => 'http://.....'  //缩略图
            ),
            1 => array('goods_id'    => 124,
                'goods_name'  => 测试商品2,
                'goods_price' => '12.10',
                'max_number'  => '',
                'thumb_url'   => 'http://.....'
            ),
            2 => array('goods_id'    => 125,
                'goods_name'  => 测试商品3,
                'goods_price' => '12.10',
                'max_number'  => '',
                'thumb_url'   => 'http://.....'
            )
        );

解决方案 »

  1.   

    $result = array();
    foreach($goods as $vals){
       if($vals['goods_id']==123){
         $result[] = $vals;
         break;
       }
    }
      

  2.   

    function foo($v) 
    {
    if ($v['goods_id']===123)
    {
    return true;
    }
    return false;
    }print_r(array_filter($goods,"foo"));
      

  3.   

    变形数组为$goods = array(
                123 => array('goods_id'    => 123, //goods_id
                    'goods_name'  => 测试商品,    //商品名称
                    'goods_price' => '12.10',       //商品价格
                    'max_number'  => '5',           //限购数量
                    'thumb_url'   => 'http://.....'  //缩略图
                ),
                124 => array('goods_id'    => 124,
                    'goods_name'  => 测试商品2,
                    'goods_price' => '12.10',
                    'max_number'  => '',
                    'thumb_url'   => 'http://.....'
                ),
                125 => array('goods_id'    => 125,
                    'goods_name'  => 测试商品3,
                    'goods_price' => '12.10',
                    'max_number'  => '',
                    'thumb_url'   => 'http://.....'
                )
            );直接 print_r($goods[123]);
      

  4.   


    这个也不错,用array_map更好吧?
    可以传多个参数,goods_id也可以传进来了
    function foo($v1,$v2) 
    {
    if ($v1['goods_id']===$v2)
        {
        return true;
        }
    return false;
    }
    $goods_id = 123; 
    print_r(array_map("foo",$goods,$goods_id));
      

  5.   

    [code=php]
    function get_goods($goods,$a){
    foreach($goods as $value){
    if(is_array($value)){
    foreach($value as $key=>$value1){
    if($value['goods_id']==$a){
    $result1[]=$key;
    $result2[]=$value1;
    }
    }
    }
    }
    $b=array_combine($result1,$result2);
    return array_slice($b,1);
    }
    $c=get_goods($goods,125);//$a根据你需求填写,可以是123也可以是124或125
    print_r($c);
    [/code]
      

  6.   


    function get_goods($goods,$a){
    foreach($goods as $value){
    if(is_array($value)){
    foreach($value as $key=>$value1){
    if($value['goods_id']==$a){
    $result1[]=$key;
    $result2[]=$value1;
    }
    }
    }
    }
    $b=array_combine($result1,$result2);
    return array_slice($b,1);
    }
    $c=get_goods($goods,125);//$a根据你需求填写,可以是123也可以是124或125
    print_r($c);
      

  7.   

    foreach($goods as $v) $res[$v['goods_id']] = $v;
    $goods = $res;