2012-02-10 79 views
-1

我想要做的事情如下。使用多維數組發生問題

比方說我們有數組這樣

$arr=array(); 
$arr[1]['test1']="something"; 
$arr[1]['test2']="something else" 

...

$arr[2]['test1']="blah blah"; 
$arr[2]['test2']="foo bar" 

...

我想通過一個類似的

something something else ... <all elements of $arr[1]> 

blah blah foo bar   ... <all elements of $arr[2]> 
來呼應他們一個

但是!

if($arr[1]['test1']=="something") 
don't echo elements of $arr[1] at all 

這是可能的新陣列創建中$ arr [1]根本不存在?或在回聲期間?

回答

0

也許這應該做的伎倆:

// Iterate and show the words 
foreach ($arr as $words) { 
    if (in_array("something", $words)) 
     continue; 

    echo join(' ', $words) . '<br />'; 
} 

continue通話將跳轉到下一個迭代,所以如果它包含「東西」元素

+0

仔細閱讀問題。我知道什麼意思是內爆,但內爆與我的問題無關 – heron 2012-02-10 06:37:37

+0

@epic_syntax - 你去...我已經更新了代碼;) – 2012-02-10 06:41:01

+0

如果我不知道哪個數組完全位於「什麼「(我的意思是在$ arr [1] ['test1']或... $ arr [n] ['test1'])?我如何找到並取消設置正確的數組? – heron 2012-02-10 06:44:12

0

這將跳過陣列是一些代碼,但請更具體一點,如果不是你的意思。 如果它是「某些東西」,你只想檢查$ arr [1]的第一個元素嗎?你知道陣列的所有鍵嗎? 或者:我們可以先循環整個數組,然後刪除一些元素?

$arr=array(); 
$arr[1]['test1']="something"; 
$arr[1]['test2']=" something else1 "; 
$arr[1]['test3']=" something else2 "; 

$arr[2]['test1']=" abc "; 
$arr[2]['test2']=" def "; 
$arr[2]['test3']=" ghi "; 


foreach ($arr as $sub_arr){ 
    if($sub_arr['test1']!="something"){ 
     foreach ($sub_arr as $element){ 
      echo $element; 
     } 
    } 
} 
+0

如果我不知道在哪個數組完全位於「一些東西「(我的意思是在$ arr [1] ['test1']或者... $ arr [n] ['test1'])?我如何找到並取消設置正確的數組? – heron 2012-02-10 06:45:19

+0

只要你知道它是「$ arr [n] [test1]」,我的代碼應該適合你。只要更改上面的數組的模塊1 <-> 2,並看到仍然顯示「abc def ghi」 – 2012-02-10 06:50:07

0
foreach($arr[1] as $value){ 
    if($value == "something"){ 
     unset($arr[1]); 
    } 
} 
sort($arr); 
for($i=0;$i<count($arr);$i++){ 
    echo implode(" ",$arr[$i]); 
    echo "<br>"; 
} 

這將東西值 未設置的數組,那麼排序將發生的事情,並顯示爲你想讓它

0

可以遍歷和裏面添加邏輯。

$new=array(); 
$omit = -1; 
foreach($arr as $key => $value){ 
    if($value['test1']=="something"){    
     $omit = $key; 
    }else{ 
     $new[$key] = $value['test1'].' '.$value['test2']; 
    } 
    if(isset($new[$omit])){ 
    unset($new[$omit]); 
    } 
} 

//now print the final array one by one 
foreach($new as $final){ 
    echo $final.'<br/>'; 
}