【问题标题】:PHP Combining arrays with std classPHP将数组与std类结合起来
【发布时间】:2010-07-30 21:21:47
【问题描述】:

这是我想要的,但不知道怎么做。

$a 是这个数组 PHP代码:

Array 
( 
    [0] => stdClass Object 
        ( 
            [id] => i1 
            [cat] => Test1 
        ) 

    [1] => stdClass Object 
        ( 
            [id] => i2 
            [cat] => Test2 
        ) 

    [2] => stdClass Object 
        ( 
            [id] => i3 
            [cat] => Test3 
        ) 

    [3] => stdClass Object 
        ( 
            [id] => i4 
            [cat] => Test4 
        ) 
 }  

这是一个数组,它有与之关联的那些标准类。我要做的是将所有“猫”名称组合到一个数组变量中。

我想让 $categories 成为一个数组,所有这些“猫”作为数组值。

我该怎么做?

【问题讨论】:

    标签: php arrays class std


    【解决方案1】:
    array_map($a, function(stdClass $o) { return $o->cat; });
    

    【讨论】:

    • $categories = array_map( ... );
    • 旁注:function(stdClass $o) {...} 等匿名函数在 5.3 之前的 php 版本中不可用。见docs.php.net/closures
    【解决方案2】:

    一个简单的方法就是遍历数组,获取你想要的值。还有其他更好的方法可以做到这一点,但我喜欢保持简单。

    $categories = array();
    foreach ($a as $obj) {
        $categories[] = $obj->cat;
    }
    

    当然,如果不是所有数组项都是该对象,那么检查cat 属性是否存在(并且$objstdClass!)可能是值得的。

    【讨论】:

      【解决方案3】:

      只需循环并创建一个新数组...

      <?php
      $newArray = array();
      
      foreach($a as $cat) {
        $newArray[$cat->id] = $cat->cat;
      }
      
      var_dump($newArray);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多