array_search返回NULL

时间:2016-03-12 01:26:13

标签: php mysql null

帮助。

我在SQL中有两个表(注册人和合作伙伴),每个表都有几列,但是有两列具有唯一值(在表中),SequenceNo和Submission。我正在尝试使用其中任何一列来查找合作伙伴表中的匹配行。所有这些数据都通过网站上的表格放入表格中。

我的代码如下:

<?PHP
$r = "regsandbox";
$p = "regsandboxpart";
$db = JFactory::getDBO();

$sql = "SELECT * FROM `" .$r. "`ORDER BY `School` , `StudentLastName`";
$db->setQuery($sql);
$result = $db->query();
$schoolrows = $db->loadAssocList();
$plena = sizeof($schoolrows);

$sql = "SELECT * FROM `" .$p. "`";
$db->setQuery($sql);
$result = $db->query();
$partnerrows = $db->loadAssocList();
$plen = sizeof($partnerrows);

echo "<table>";
$school = null;
for ($i = 0; $i<sizeof($schoolrows); $i++) {
  $row = $schoolrows[$i];
  $group = $row ["Group"];
  $submission = $row["Submission"];
  $key = array_search($submission,$partnerrows);
  $partners = $partnerrows [$key];
  $lasta = $partners ["P1LastName"];
  $lastb = $partners ["P2LastName"];
  $firsta = $partners ["P1FirstName"];

其余代码无关紧要,因为$ submission返回正确的针,但在搜索haystack时,结果始终为null。

我是php的新手,所以我去学习,但我不明白为什么这不起作用。

谢谢, 标记

1 个答案:

答案 0 :(得分:0)

你写道:

$submission = $row["Submission"];
$key = array_search($submission,$partnerrows);

$partnerrows是一个多维数组,因此您的搜索失败。

要搜索多维数组中的键,您可以使用:

在PHP版本上&gt; = 5.5:

$key = array_search( $submission, array_column( $partnerrows, 'Submission' ) );

关于PHP版本&lt; 5.5 1

if( !function_exists( 'array_column' ) )
{
    function array_column( array $input, $column_key, $index_key = null )
    {
        $result = array();
        foreach( $input as $k => $v )
        {
            $result[ $index_key ? $v[ $index_key ] : $k ] = $v[ $column_key ];
        }
        return $result;
    }
}

$key = array_search( $submission, array_column( $partnerrows, 'Submission' ) );

1 来自https://gist.github.com/TorbenKoehn/5866154的原始代码