array_search returns NULL


array_search returns NULL

帮助。

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

我拥有的代码如下:

<?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返回正确的针,但是在搜索大海捞针时,结果始终为 null。

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

谢谢马克

你写道:

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

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

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

在 PHP 版本>= 5.5 上:

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

在 PHP 版本 <5.51 上:

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 的原始代码