1

どのPHP関数が私が目指していることを達成できるかについて、ある程度明確にする必要があります。

これは私が持っているPHP配列です:

Array
(
[0] => Array
    (
        [id] => 6
        [index] => 1
        [active] => 1
        [name] => MyName
    )

[1] => Array
    (
        [id] => 1
        [index] => 2
        [active] => 1
        [name] => YourName
    )

[2] => Array
    (
        [id] => 2
        [index] => 4
        [active] => 1
        [name] => TheirName
    )
}

「インデックス」値を取得して、その配列の親のKEYにしたいので、配列は次のようになります。

Array
(
[1] => Array
    (
        [id] => 6
        [index] => 1
        [active] => 1
        [name] => MyName
    )

[2] => Array
    (
        [id] => 1
        [index] => 2
        [active] => 1
        [name] => YourName
    )

[4] => Array
    (
        [id] => 2
        [index] => 4
        [active] => 1
        [name] => TheirName
    )
}

PHPでこれを行う方法を教えてもらえますか?

前もって感謝します。

4

5 に答える 5

7

次を使用できます:array_column($ array、null、'index'); より良い解決策ですが、5.5phpバージョン以上でのみ機能します

于 2013-11-06T23:21:18.950 に答える
4

最も洗練されたソリューションではありませんが、機能します(実際にはアレイを移動せず、要件に対応する新しいアレイを生成するだけです)。

$resultArr = array();
foreach ($mainArr as $value) {
    $resultArr[$value['index']] = $value;
}
unset($mainArr); // or $mainArr = $resultArr;

このようにして、元の配列の既存のキーを上書きすることはありません。

于 2013-01-18T12:59:55.310 に答える
1
 $a =  array
 (
    0 => array
    (
        "id" => 6,
        "index" => 1,
        "active" => 1,
        "name" => "MyName"
        ),

    1 => Array
    (
        "id" => 1,
        "index" => 2,
        "active" => 1,
        "name" => "YourName"
        ),

    2 => Array
    (
        "id" => 2,
        "index" => 4,
        "active" => 1,
        "name" => "TheirName"
        )
);

 $newArray = array();
 foreach ($a as $foo) {
    $newArray[$foo['index']] = $foo;
 }
于 2013-01-18T13:01:04.803 に答える
1

あなたはそれを手動で行う必要があります:

$input  = array( /* your data */ );
$output = array();

foreach ( $input as $values ) {
  $output[ $values['index'] ] = $values;
}
于 2013-01-18T13:01:09.910 に答える
1
public static function normArray($key, $inputArray)
{
    $outputArray = array();
    foreach ($inputArray as $item) {
        $index = intval($item[$key]);
        $outputArray[$index] = $item;
    }
    return $outputArray;
}
于 2014-02-26T23:49:49.763 に答える