Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查循环中是否存在数组键和值_Php_Arrays_Multidimensional Array_Foreach - Fatal编程技术网

Php 检查循环中是否存在数组键和值

Php 检查循环中是否存在数组键和值,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我有一张这样的票 $ret=array(); foreach($temp as $k=>$v) { $thv=mysql_fetch_array(mysql_query(" SOMEQUERY ")); $ret[]=$thv; } 这里我把$thv的每个输出推到$ret就像$ret[]=$thv $ret的输出为 [1] => Array ( [0] => 701 [id] => 701 [1]

我有一张这样的票

$ret=array();
foreach($temp as $k=>$v)
{
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    $ret[]=$thv;
}
这里我把
$thv
的每个输出推到
$ret
就像
$ret[]=$thv
$ret
的输出为

[1] => Array
    (
        [0] => 701
        [id] => 701
        [1] => 1180
        [media_image_id] => 1180
        [2] => George Cumming - Session 1
        [name] => George Cumming - Session 1
        [3] => 
        [preparation] => 
        [4] => 
        [description] => 
        [5] => 
        [coaching_points] => 
        [6] => 
        [progressions] => 
    )

[2] => Array
    (
        [0] => 701
        [id] => 701
        [1] => 1180
        [media_image_id] => 1180
        [2] => George Cumming - Session 1
        [name] => George Cumming - Session 1
        [3] => 
        [preparation] => 
        [4] => 
        [description] => 
        [5] => 
        [coaching_points] => 
        [6] => 
        [progressions] =>
    )
这里
id=>701
重复,所以我要做的是,从数组中删除重复的值,但要在该foreach循环中。 像


这样就不需要再创建一个foreach。有人知道如何在php中实现这一点吗?

我有个主意-使用
id
作为
$ret
的键。例如:

$ret = array();
$ids = array();
foreach($temp as $k => $v) {
    // Run query
    $thv = mysql_fetch_array(mysql_query(" SOMEQUERY "));

    // Check if id present
    if (!in_array($thv['id'], $ids)) {
        // Not present, add to arrays
        $ids[] = $thv['id'];
        $ret[] = $thv;
    }
}
$ret=array();
foreach($temp as $k=>$v)
{
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if (!isset($ret[$thv['id']])){
         $ret[$thv['id']]=$thv;
    }
}
如果仍然希望0..n成为
$ret
的键,可以这样做:

$ret = array_values($ret);

我有个主意-使用
id
作为
$ret
的键。例如:

$ret=array();
foreach($temp as $k=>$v)
{
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if (!isset($ret[$thv['id']])){
         $ret[$thv['id']]=$thv;
    }
}
如果仍然希望0..n成为
$ret
的键,可以这样做:

$ret = array_values($ret);

我有个主意-使用
id
作为
$ret
的键。例如:

$ret=array();
foreach($temp as $k=>$v)
{
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if (!isset($ret[$thv['id']])){
         $ret[$thv['id']]=$thv;
    }
}
如果仍然希望0..n成为
$ret
的键,可以这样做:

$ret = array_values($ret);

我有个主意-使用
id
作为
$ret
的键。例如:

$ret=array();
foreach($temp as $k=>$v)
{
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if (!isset($ret[$thv['id']])){
         $ret[$thv['id']]=$thv;
    }
}
如果仍然希望0..n成为
$ret
的键,可以这样做:

$ret = array_values($ret);
试试这个代码

$ret=array();
foreach($temp as $k=>$v)
{
    $temp =array_column($ret,'id');
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if(!in_array($thv['id'],$temp)){
       $ret[]=$thv;
    }

}
试试这个代码

$ret=array();
foreach($temp as $k=>$v)
{
    $temp =array_column($ret,'id');
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if(!in_array($thv['id'],$temp)){
       $ret[]=$thv;
    }

}
试试这个代码

$ret=array();
foreach($temp as $k=>$v)
{
    $temp =array_column($ret,'id');
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if(!in_array($thv['id'],$temp)){
       $ret[]=$thv;
    }

}
试试这个代码

$ret=array();
foreach($temp as $k=>$v)
{
    $temp =array_column($ret,'id');
    $thv=mysql_fetch_array(mysql_query(" SOMEQUERY "));
    if(!in_array($thv['id'],$temp)){
       $ret[]=$thv;
    }

}

mysql扩展已弃用。新代码应该使用or,两者都有重要的优点,比如支持准备好的语句。此外,结果可以直接迭代(尽管mysqli需要php5.4),结果可以一次提取到一个数组中(换句话说,每个扩展已经有一个函数可以完成循环所做的事情)。应该通过正确编写SQL语句来防止重复,而不是通过在PHP中过滤它们来防止重复。重复的“”可能还有许多其他语句。不推荐使用mysql扩展。新代码应该使用or,两者都有重要的优点,比如支持准备好的语句。此外,结果可以直接迭代(尽管mysqli需要php5.4),结果可以一次提取到一个数组中(换句话说,每个扩展已经有一个函数可以完成循环所做的事情)。应该通过正确编写SQL语句来防止重复,而不是通过在PHP中过滤它们来防止重复。重复的“”可能还有许多其他语句。不推荐使用mysql扩展。新代码应该使用or,两者都有重要的优点,比如支持准备好的语句。此外,结果可以直接迭代(尽管mysqli需要php5.4),结果可以一次提取到一个数组中(换句话说,每个扩展已经有一个函数可以完成循环所做的事情)。应该通过正确编写SQL语句来防止重复,而不是通过在PHP中过滤它们来防止重复。重复的“”可能还有许多其他语句。不推荐使用mysql扩展。新代码应该使用or,两者都有重要的优点,比如支持准备好的语句。此外,结果可以直接迭代(尽管mysqli需要php5.4),结果可以一次提取到一个数组中(换句话说,每个扩展已经有一个函数可以完成循环所做的事情)。应该通过正确编写SQL语句来防止重复,而不是通过在PHP中过滤它们来防止重复。重复的“”可能还有许多其他语句。
in_array()
是一个糟糕的选择,因为它必须搜索数组。总的来说,它使这个
O(n^2)
。如果需要一组标量,请将标量用作键,而不是值。@outis:当然,我知道,但对于这样的代码,这应该不会有任何问题。我很确定这个查询不是用来把人送入太空的。我知道时间的复杂性,但它简单易读。问题是这是一个糟糕的例子。人们将从这个代码中学习。您可以编写同样简单合理的代码,但也可以通过更改两行来执行。
in_array()
是一个糟糕的选择,因为它必须搜索数组。总的来说,它使这个
O(n^2)
。如果需要一组标量,请将标量用作键,而不是值。@outis:当然,我知道,但对于这样的代码,这应该不会有任何问题。我很确定这个查询不是用来把人送入太空的。我知道时间的复杂性,但它简单易读。问题是这是一个糟糕的例子。人们将从这个代码中学习。您可以编写同样简单合理的代码,但也可以通过更改两行来执行。
in_array()
是一个糟糕的选择,因为它必须搜索数组。总的来说,它使这个
O(n^2)
。如果需要一组标量,请将标量用作键,而不是值。@outis:当然,我知道,但对于这样的代码,这应该不会有任何问题。我很确定这个查询不是用来把人送入太空的。我知道时间的复杂性,但它简单易读。问题是这是一个糟糕的例子。人们将从这个代码中学习。您可以编写同样简单合理的代码,但也可以通过更改两行来执行。
in_array()
是一个糟糕的选择,因为它必须搜索数组。总的来说,它使这个
O(n^2)
。如果需要一组标量,请将标量用作键,而不是值。@outis:当然,我知道,但对于这样的代码,这应该不会有任何问题。我很确定这个查询不是用来把人送入太空的。我知道时间的复杂性,但它简单易读。问题是这是一个糟糕的例子。人们将从这个代码中学习。您可以编写同样简单合理的代码,但也可以通过更改两行来提高性能。性能甚至比OptimuScime的答案还要差
array\u column()
也是
O(n)
,而且每次迭代都要重新创建
$temp
数组,即使每次都有一个额外的项(
$thv['id']
),性能甚至比OptimucPrime的答案还要差<代码>数组_列()