我想做的是跟随。
假设我们有类似的数组
$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]根本不存在?还是在回声期间?
答案 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/>';
}