2011-08-10 10 views
0

は、私が使用されていない車の残りの部分(アウディとトヨタが)最後の関数で表示することである必要がある私はPHPの配列 - ディスプレイ未使用VARS

<?php 

$type[ford][focus] = 'some text'; 
$type[ford][fiesta] = 'some text'; 

$type[toyota][corola] = 'some text'; 
$type[toyota][avensis] = 'some text'; 

$type[bmw][x6] = 'some text'; 
$type[bmw][x5] = 'some text'; 

$type[audi][a6] = 'some text'; 
$type[audi][a8] = 'some text'; 



function show($car){ 

foreach ($car as $model) 
{ 
echo $model; 
} 

} 



echo 'Best cars'; 
show ($type[bmw]); 

echo 'Other cars'; 
show ($type[ford]); 


?> 

を考えてみましょう。したがって、show($ type [ford])にはford、audi、およびtoyotaの車が表示されます。

ありがとうございます。

+3

**文字列の場合は、配列キーを引用してください。**エラー報告を有効にした場合に表示されるように、 '$ type [ford]'は間違っています。それは '$ type ['ford']'である必要があります。 – deceze

+0

@LoWE:再帰を理解していますか?その場合は、[is_array()](http://php.net/manual/en/function.is-array.php)だけで十分です。そうでない場合は、[this](http://www.elated.com/articles/php-recursive-functions/)のような記事をお試しください。 –

+1

@André:私は質問を完全に誤解していたに違いないが、再帰とは何が関係しているのかわかりません。 – JJJ

答えて

1

ここで元の変数のコピーを作成していますが、それ以降も使用しない場合は元の変数も変更できます。

$cars = $type; 

echo 'Best cars'; 
show ($type[ 'bmw' ]); 
unset($cars[ 'bmw' ]); 

echo 'Other cars'; 
foreach($cars as $car) { 
    show($car); 
} 
+0

私の提案は、show()でforeachを再利用して再帰的な関数にすることです。 –

+0

@André:私は例を見たいと思います。私はあなたが何を意味するかはかなり分かりません。 – JJJ

+0

下記の私の答えを参照してください。 –

0

私は、配列内の項目は、関数がコードされていないとして「使用」されているが、私は、配列に残って、すべての機能にunset()を使用することをお勧めしますどのように見ることができないでいるアイテム未使用です。仕事をするためにショーを())(未設定を使用しますが、書き換え

また
0

は:

function show($car){ 
    foreach ($car as $model) 
    { 
    if(is_array($model)) { 
     show($model); 
    } else { 
     echo $model; 
    } 
    } 
} 

$cars = $type; 

echo 'Best cars'; 
show ($type[ 'bmw' ]); 
unset($cars[ 'bmw' ]); 

echo 'Other cars'; 
show($cars); 

この方法で、あなたはより多くのレベルを持っている車$を変更することができます(例えば、モデルの年)とコードを変更する必要はありません。

+0

面白い!私はここでそれを使用するかどうかはわかりませんが、他のケースでは用途がわかります。 – JJJ

関連する問題