5

配列をよりよく理解しようとしています。3 週間前に最初の PHP 本を開いたばかりなので、初歩的な質問で申し訳ありません。

以下のように、foreach (または for ループ) を使用してキーと値のペアを取得できることがわかりました。

 $stockprices= array("Google"=>"800", "Apple"=>"400", "Microsoft"=>"4",  "RIM"=>"15",  "Facebook"=>"30");

foreach ($stockprices as $key =>$price)

私が混乱しているのは、次のような多次元配列です。

$states=(array([0]=>array("capital"=> "Sacramento", "joined_union"=>1850, "population_rank"=> 1),
              [1]=>array("capital"=> "Austin", "joined_union"=>1845,"population_rank"=> 2),
              [2]=>array("capital"=> "Boston", "joined_union"=>1788,"population_rank"=> 14)
              ));

最初の質問は本当に基本的なものです。「capital」、「joined_union」、「population_rank」がキーで、「Sacramento」、「1850」、「1」が値であることはわかっています (正しいですか?)。しかし、[0] は何と呼んでいますか? [1][2]? それらは「主キー」や「大文字」などのサブキーですか? 本でもオンラインでも、それらの定義が見つかりません。

主な質問は、配列 [0][1][2] を取得する方法です。1845 年に Join_union された配列 (または 1800 年代にはさらにトリッキーな配列) を取得したい場合は、その配列を削除します。

最後に、Arrays [0][1][2] にカリフォルニア、テキサス、マサチューセッツの名前を付けてもよろしいですか?

$states=(array("California"=>array("capital"=> "Sacramento", "joined_union"=>1850, "population_rank"=> 1),
              "Texas"=>array("capital"=> "Austin", "joined_union"=>1845,"population_rank"=> 2),
              "Massachusetts"=>array("capital"=> "Boston", "joined_union"=>1788,"population_rank"=> 14)
              ));
4

3 に答える 3

1

1: 多次元配列は基本的に「配列の配列」です。

したがって、ここを見ると:

array("0"=>array("capital"=> "Sacramento", "joined_union"=>1850, "population_rank"=> 1)

0 がキーで、配列が値です。

次に、値の中にcapitalキーとSacramento値があります。

2: 配列 を削除する場合: 配列から要素を削除する

3: キーの状態名

はい、その 0、1、2 を状態名に変更できます。これらは、番号付き配列ではなくキー値になります。これにより、削除したいものを正確に削除することがはるかに簡単になります。

于 2013-05-09T16:42:58.827 に答える
1

他の言語とは異なり、PHP の配列は数値キーまたは文字列キーを使用できます。選んで。(これは PHP のあまり愛されていない機能であり、他の言語は冷笑的です!)

$states = array(
    "California"    => array(
        "capital"         => "Sacramento",
        "joined_union"    => 1850,
        "population_rank" => 1
    ),
    "Texas"         => array(
        "capital"         => "Austin",
        "joined_union"    => 1845,
        "population_rank" => 2
    ),
    "Massachusetts" => array(
        "capital"         => "Boston",
        "joined_union"    => 1788,
        "population_rank" => 14
    )
);

あなたが持っている構造のクエリに関しては、2つの方法があります
1)ループ

$joined1850_loop = array();
foreach( $states as $stateName => $stateData ) {
    if( $stateData['joined_union'] == 1850 ) {
        $joined1850_loop[$stateName] = $stateData;
    }
}
print_r( $joined1850_loop );
/*
Array
(
    [California] => Array
        (
            [capital] => Sacramento
            [joined_union] => 1850
            [population_rank] => 1
        )

)
*/

2) array_filter関数の使用:

$joined1850 = array_filter(
    $states,
    function( $state ) {
        return $state['joined_union'] == 1850;
    }
);
print_r( $joined1850 );
/*
Array
(
    [California] => Array
        (
            [capital] => Sacramento
            [joined_union] => 1850
            [population_rank] => 1
        )

)
*/

-

$joined1800s = array_filter(
    $states,
    function ( $state ){
        return $state['joined_union'] >= 1800 && $state['joined_union'] < 1900;
    }
);
print_r( $joined1800s );
/*
Array
(
    [California] => Array
        (
            [capital] => Sacramento
            [joined_union] => 1850
            [population_rank] => 1
        )

    [Texas] => Array
        (
            [capital] => Austin
            [joined_union] => 1845
            [population_rank] => 2
        )

)
*/
于 2013-05-09T16:58:33.453 に答える
1

多次元配列は、配列を値として持つ単純な配列です。単純または「スカラー」型はint、 、 、stringおよびboolのような型であり、1 つの値と 1 つの値のみを保持します。配列は複合型です。つまり、他のいくつかのものを組み合わせたものです。配列には、配列を含む他の型の値を含めることができます。

最も単純な視覚化は、おそらく次の手書きです。

$array = array('foo' => array('bar' => 'baz'));

$foo = $array['foo']; // $foo is now array('bar' => 'baz')

echo $foo['bar']; // outputs 'baz'

これは、上記と同じことの省略形です。

echo $array['foo']['bar'];

$array['foo']値へのアクセスを提供し、array('bar' => 'baz')その['bar']配列で値を提供します'baz'。中間値を変数に割り当てるか、直接続行するかは問題ではありません。

逆に、多次元配列は単なる配列内の配列であるという概念のデモンストレーションを次に示します。

$baz   = 'baz';
$bar   = array('bar' => $baz);
$array = array('foo' => $bar);

それだけです。

ネストされた配列は配列「サブ配列」で呼び出すことができますが、ネストされた配列は特別なケースではないため、実際の定義はなく、これを定義する必要はありません。

「2 次元」、「3 次元」などの配列という用語を使用した説明に出くわすかもしれません。これをテーブルや立方体と考えないでください。正確ではなく、3 次元を超えると頭が爆発するからです。この単純な「次元」は、配列の深さ、つまり互いに入れ子になっている配列の数を指します。

于 2013-05-09T17:52:35.510 に答える