2012-02-10 65 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/>'; 
}