3

以下の質問。

これは、Pixelerの回答に基づいて私が思いついた解決策です。

<?php
$i = 0;
foreach ($array as $k1 => $v1) {
        if (is_array($v1)) {
            echo $k1."<br />";
                foreach ($v1 as $k2 => $v2) {
                    echo "--".$k2."<br />----".$v2."<br />";
                }
            $i++;
        }
        echo "<br /<br />";
}
?>

<?php
$array = array( "Apples" => array("Red" => "$2.95", "Green" => "$2.45"),
                "Oranges" => array("Navel" => "$4.95"),
                "Grapes" => array("Purple" => "$3.75", "Green" => "$3.25")
              );
?>

上記の内容を取得し、番号を呼び出すことで各値のテキストを取得することは可能ですか?どうすればこのようなことができますか?...

<?php
echo $array[0];
//Outputs "Apples"

echo $array[0][0];
//Outputs "Red"

echo $array[0][0][0];
//Outputs "$2.95"

echo $array[3][2][1];
//Outputs "$3.25" (Grapes > Green > Price)
?>

編集:アイデアは、私が呼び出すことによって、第1レベル(リンゴ、オレンジ、ブドウ)、第2レベル(赤、緑、へそ、紫、緑)、および第3レベル($ 2.95、$ 2.45、$ 4.95、$ 3.75、$ 3.25)を返すことができるということです数。

たとえば、私は次のようなことをしたいと思います。

<?php

count($array); //returns 3 (Apples, Oranges, Grapes)

//Do some for/foreach function that will produce the following:

//Apples
//->Red: $2.95
//->Green: $2.45
//Oranges
//->Navel: $4.95
//Grapes
//Purple: $3.75
//Green: $3.25

//I'm hoping to structure the code like this:

foreach($i = 0; $i =< count($array); $i++){
    //echo title of array (Apples)
    //echo each child key and it's value (Red: $2.95; Green: $2.45)

    foreach($secondcounter = 0; $secondcounter =< count($array[$i]); $secondcounter++){
        echo array_key($array[$i][$secondcounter]) . ": " .$array[$i][$secondcounter];
        //Note: I don't actually know if array_key does the trick or not, it's meant to return "Red" in this case, while the non array_key()'d is meant to return the price of red apples, $2.95
}

?>

編集:データを呼び出すために単語を使用できないことに注意することが重要です。リンゴはデータベースからロードするデータの行によって変わる可能性があるため、配列の最初の項目を呼び出すには、数字、つまり[0]を使用する必要があります。言い換えれば...リンゴは実際には本であることが判明する可能性があり、赤は本の名前=>価格であることが判明する可能性があります。

シリアライズ/アンシリアライズを使用してデータベースからデータを格納および取得する予定ですが、これらの関数についてはあまり詳しくありませんが、簡単に見てみると、かなり使いやすいようです。


私は何時間も研究してきましたが、何も見つかりません。テキストではなく番号でデータを呼び出すことができることが重要です。したがって、$array["Apples"]は受け入れられません。

json_decodeとserialize/unserializeも見てきましたが、それらの基本的な考え方は簡単に見てわかると思います...しかし、私の主な問題は、私の例で示した上記のデータの呼び出し方法を理解することだと思います。どんな助けでも本当に素晴らしいでしょう。

4

2 に答える 2

1

これは、@Pixelerの回答に基づいて私が思いついた解決策です。

<?php
$i = 0;
foreach ($array as $k1 => $v1) {
        if (is_array($v1)) {
            echo $k1."<br />";
                foreach ($v1 as $k2 => $v2) {
                    echo "--".$k2."<br />----".$v2."<br />";
                }
            $i++;
        }
        echo "<br /<br />";
}
?>
于 2011-10-31T07:06:39.650 に答える
0

これはどうですか?

array_search("Apples",array_keys($array));

配列を何らかの方法でループさせたい場合は、新しい配列を作成し、古い配列をループして新しい数値配列配列を作成する必要がありますか?

ファーストウェイ


$array = array( "Apples" => array("Red" => "$2.95", "Green" => "$2.45"),
                "Oranges" => array("Navel" => "$4.95"),
                "Grapes" => array("Purple" => "$3.75", "Green" => "$3.25")
              );

$newArray = array();
foreach ($array as $value) {
   $newArray[] = (is_array($value)) ?  array_values($value) : $value;
}

echo '<pre>';
var_dump($newArray);
echo '</pre>';

セカンドウェイ


$array = array( "Apples" => array("Red" => "$2.95", "Green" => "$2.45"),
                "Oranges" => array("Navel" => "$4.95"),
                "Grapes" => array("Purple" => "$3.75", "Green" => "$3.25")
              );

$newArray = array();
$i = 0;
foreach ($array as $key => $value) {
 if (is_array($value)) {
   $newArray[$i] = array();
  foreach ($value as $k => $v) {
    $newArray[$i][] = $v;
  }
  $i++;
 }
}

echo '<pre>';
var_dump($newArray);
echo '</pre>';

echo $newArray[0][0];

明らかに、私は最初の方法をお勧めします。

于 2011-10-29T19:49:41.613 に答える