有多维数组的问题

时间:2012-02-10 06:33:14

标签: php arrays

我想做的是跟随。

假设我们有类似的数组

$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]>

BUT!

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

这是否可能通过新的数组创建,其中$ arr [1]根本不存在?还是在回声期间?

4 个答案:

答案 0 :(得分:0)

也许这应该可以解决问题:

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

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

continue调用将跳转到下一次迭代,因此如果它包含“something”元素,它将跳过该数组

答案 1 :(得分: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;
        }
    }
}

答案 2 :(得分: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>";
}

这将取消设置值的数组 然后排序将发生并显示它你想要它

答案 3 :(得分: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/>';
}