4

PHP では、ループすることなく各サブ配列から要素を取得する方法があります - 効率の観点から考えてください。

次の配列を言います。

$array = array(
    array(
        'element1' => a,
        'element2' => b
    ),
    array(
        'element1' => c,
        'element2' => d
    )
);

$array の「element1」の値をすべて取得したい

4

4 に答える 4

4

必要な出力に応じて、配列を操作できるさまざまな関数がいくつかあります...

$array = array(
    array(
       'element1' => 'a',
       'element2' => 'b'
   ),
   array(
       'element1' => 'c',
       'element2' => 'd'
   )
);

// array of element1s : array('a', 'c')
$element1a = array_map(function($item) { return $item['element1']; }, $array);

// string of element1s : 'ac'
$element1s = array_reduce($array, function($value, $item) { return $value . $item['element1']; }, '');

// echo element1s : echo 'ac'
array_walk($array, function($item) {
    echo $item['element1'];
});

// alter array : $array becomes array('a', 'c')
array_walk($array, function(&$item) {
    $item = $item['element1'];
});

便利なドキュメント リンク:

于 2013-04-25T10:46:56.167 に答える
2

PHP 5.5 (現在ベータ 4 が利用可能) を実行している場合は、次のようになります。

$element1List = array_column($array, 'element1');

$array の各要素の element1 値だけの単純な配列として $element1List を与える必要があります

$array = array(
    array(
       'element1' => a,
       'element2' => b
   ),
   array(
       'element1' => c,
       'element2' => d
   )
);

$element1List = array_column($array, 'element1');
print_r($element1List);

与える

Array
(
    [0] => a
    [1] => c
)
于 2013-04-25T10:39:26.680 に答える
0

ループなし?再帰!

$array = array(
        array(
                'element1' => 'a',
                'element2' => 'b'
        ),
        array(
                'element1' => 'c',
                'element2' => 'd'
        )
);

function getKey($array,$key,$new = array()){
    $count = count($array); 
    $new[] = $array[0][$key];
    array_shift($array);

    if($count==1)
        return $new;

    return getKey($array,$key,$new);
}

print_R(getKey($array,'element1'));

ウィキペディアから理解したように、再帰はループではありません。

于 2013-04-25T11:36:14.587 に答える