php配列関数解析--array_column

2203 ワード

array_column
公式住所:array_column
  • array_columnはPHPバージョン5.5以上でしか実行できませんが、5.3ではこの関数はサポートされていません.5.3使用する場合:
    Fatal error: Call to undefined function array_column()
  • array_columnはどのように使いますか?
  • 以下の例を挙げる:
  • 二次元配列からある列が抽出され、一次元配列となる.
    $a = array(array('discussion_id' => 123456),array('discussion_id' => 27495220), array('discussion_id' => 27495087));      
    $a = array_column($a,'discussion_id');
    var_dump($a);
    実行結果:
    array(3) {
      [0]=>
      int(123456)
      [1]=>
      int(27495220)
      [2]=>
      int(27495087)
    }
  • 2次元配列では、ある列を下付きとし、ある列を値として1次元配列とする.
    $b = array(array('id'=>345,'name'=>'  ','address'=>'beijing'),array('id'=>298,'name'=>'  ','address'=>'shanghai'),array('id'=>390,'name'=>'  ','address'=>'guangzhou'));
    $b = array_column($b,'name','id');
    var_dump($b);
    実行結果:
    array(3) {
      [345]=>
      string(6) "  "
      [298]=>
      string(6) "  "
      [390]=>
      string(6) "  "
    }
    Web実行環境のPHPバージョンが5.5未満の場合、2次元配列の列を1つの配列としてどのように抽出しますか?
  • 次の例を見て、配列内の下付き文字に基づいて配列を再生成します:
    public static function getNewArrByElement($list, $element) {
        if(!isset($list) || !is_array($list) || empty($list)) {
            return array();
        }
        if(!isset($element) || empty($element)) {
            return array();
        }
        $j = 0;
        $result = array();
        for($i = 0; $i < count($list); $i++) {
            if(isset($list [$i] [$element])) {
                $result [$j] = $list [$i] [$element];
                $j++;
            } else {
                return array();
            }
        }
        return $result;
    }
    $a = array(array('discussion_id' => 123456),array('discussion_id' => 27495220), array('discussion_id' => 27495087));  
    $a = CommonUtil::getNewArrByElement($a,'discussion_id');
    実行結果:
    array(3) {
      [0]=>
      int(123456)
      [1]=>
      int(27495220)
      [2]=>
      int(27495087)
    }