【问题标题】:How can I output specific data from an associative array in PHP with foreach如何使用 foreach 从 PHP 中的关联数组中输出特定数据
【发布时间】:2015-06-23 20:13:10
【问题描述】:

我的关联数组:

$products = array();
$products[101] = array(
    "name" => "Red Shirt",
    "img" => "img/shirts/shirt-101.jpg",
    "price" => 18
);
$products[102] = array(
    "name" => "Black Shirt",
    "img" => "img/shirts/shirt-102.jpg",
    "price" => 20
);
$products[103] = array(
    "name" => "Blue Shirt",
    "img" => "img/shirts/shirt-103.jpg",    
    "price" => 20
);

假设我想像这样输出所有产品数组的名称:

红衬衫、黑衬衫、蓝衬衫

如何使用 foreach 循环实现这一点?我试图一次只从所有数组中输出一个特定的键,但如果不输出所有键,我似乎无法做到这一点。

还可以说我只想输出某个数组的“价格”,例如 $products[103] 我该如何实现?

谢谢!

【问题讨论】:

    标签: php loops foreach associative-array


    【解决方案1】:

    你可以使用下面的代码,使用foreach

    foreach($products as $pro)
    {
        echo $pro['name'];
    }
    

    上面的代码将只打印产品数组的name

    要获得$product['103'] 的价格,您可以使用如下代码

    foreach ($products as $key => $value)
    {
        if ($key == '103')
        {
            echo $pro['price'];
        }
    }
    

    EDIT:获取名称数组

    $names = array();
    foreach ($products as $pro)
    {
        $names[] = $pro['name'];
    }
    print_r($names);
    

    它会返回

    数组([0] => 红衬衫 [1] => 黑衬衫 [2] => 蓝衬衫)

    如果这对你有帮助,请告诉我

    【讨论】:

    • 非常感谢,只是很好奇,尽管假设您想获取键和值.. 像所有数组中的 "name" "Red Shirt", "name" "Black Shirt", "name" "Blue Shirt", 这样怎么做?
    • @LucasSantos 数组如何拥有相同的键? key 这个词表示它的唯一性......它不能重复......如果数组中有相同的命名键,它将覆盖最后一个值......
    【解决方案2】:

    简单,这样使用

    foreach($products as $product){
        echo $product['name'];
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      foreach($products as $key => $val) {
          // For name
          echo $val['name'];
      
          // For specific product price
          if($key == 103) {
              echo $val['price'];
          }
      }
      

      如果有任何问题,请告诉我。

      【讨论】:

        【解决方案4】:

        试试下面的代码(这将涵盖所有场景)

        function getMyArray($key, $arr = array()){
            $result = array();
            foreach($arr as $arrVal){
                $result[] = $arrVal[$key];
            }
            return implode(", ", $result);
        }
        
        echo getMyArray('name', $products);  // Red Shirt, Black Shirt, Blue Shirt
        echo getMyArray('img', $products);   //path1, path2, path3
        echo getMyArray('price', $products); // 18, 20, 20
        

        如果你想要一些特定的价值:

        echo $products[103]['price']; // 20
        

        【讨论】:

        • 使用函数将结果内爆为数组的好方法
        • 感谢您的 cmets Lucas
        【解决方案5】:

        试试这个

        foreach ($products as $prd) {
                echo $prd['name'];
        }
        

        【讨论】:

        • 感谢您的回答!
        【解决方案6】:
        $productNames = array();
        foreach($products as $key=>$product) {
            $productNames[] = $product['name'];
        }
        
        //all names with comma
        
        echo implode(',',$productNames);
        echo "\n";
        
        //only price of $products[103]
        
        echo $products[103]['price'];
        

        结果:

        Red Shirt, Black Shirt, Blue Shirt
        20
        

        【讨论】:

          【解决方案7】:

          您将得到与此代码所希望的完全相同的输出

          foreach($products as $key=>$result)
          {
          
              echo $result['name'].', ';
          }
          

          输出:

          Red Shirt, Black Shirt, Blue Shirt
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-07
            • 2021-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-22
            相关资源
            最近更新 更多