2011-08-10 6 views
0

내가 사용하지 않는 자동차의 나머지 (아우디와 도요타)이 마지막 기능에 표시 될 것입니다 필요가 내가PHP 배열 - 표시되지 않는 바르

<?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