繁体   English   中英

PHP关联数组,仅包含1个元素

[英]PHP associative array with only 1 element

我有一个返回数组的函数(结果来自bd)

$resultat = $bd->Select($sql);

forarray结果在数组中,如果它们不符合要求,我将其从数组中删除。

foreach($indexToRemove as $elem)
    unset($resultat[$elem]);

然后,我将数组放入会话数组

$_SESSION['entrepriseTrouver'] = $resultat;

然后,我将结果显示到页面中

        $nbResultatParPage = 9; // Correspond au nombre de résultats maximale désirés par page
        $index = (($nbResultatParPage*($_SESSION['page'] - 1)) + 1); // Trouve l'index actuel à afficher ( le nombre de résultats par page * le chiffre de la page précédente ) + 1
        $max = $index + $nbResultatParPage; // Correspond a l'index maximum à afficher


        for($index; $index < $max; $index++) // On affiche les entreprises
        {
            echo "<br/>";
            if(isset($_SESSION['entrepriseTrouver'][$index-1]))
            {
                echo "#".$index."<br/>";
                print_r($_SESSION['entrepriseTrouver'][$index-1]);
                echo "<br/>";
                //echo $_SESSION['entrepriseTrouver'][$index-1][3]."<br/>".$_SESSION['entrepriseTrouver'][$index-1][7]."<br/><br/>";
                echo "-------------------------------------------------------------------------------------------------------------------------------";
            }

        }

当我的数组中没有元素或不超过1个元素时,一切工作正常,但是当我只有1个元素时,无法使用索引0访问它

print_r($_SESSION['entrepriseTrouver'][0]);

我只能使用密钥访问它。 例如,我的BD返回20个元素,并且取消设置除#17之外的所有元素,因此我将必须以这种方式访问​​它

print_r($_SESSION['entrepriseTrouver'][17]);

我不明白为什么当数组中只有1个元素时无法使用索引0访问数组。

取消设置数组中的值不会重新为其编制索引。 因此,剩下的数组的索引值为17。

使用array_values修复此问题。

foreach($indexToRemove as $elem){
    unset($resultat[$elem]);
}
$_SESSION['entrepriseTrouver'] = array_values($resultat);

print_r($_SESSION['entrepriseTrouver'][0]);

取消设置数组元素时,将删除该元素及其键。 因此,如果删除键17上的项目以外的所有项目,则您的一项是键17,而键0不存在。

一种快速解决方案是将结果分配给会话时对结果运行array_values

$_SESSION['entrepriseTrouver'] = array_values($resultat);

这将返回数组中的所有值并以数字方式进行索引,从而具有重新索引数组的作用。 如果数组中只有一项,那么它将位于键0。

unset()不会重置阵列键。 您可以通过执行以下操作来重置阵列键,这会将键重置为从0开始递增的数字

$_SESSION['entrepriseTrouver'] = array_values($_SESSION['entrepriseTrouver']);

当您从数组中删除元素时,PHP不会重置您的数组。 仅仅因为数组中只有一个元素并不意味着它就是元素0。示例:

$x[] = "foo"

echo $x[0] // echos "foo"

$x[0] = "foo"
$x[1] = "bar"
unset($x[0])
echo $x[0] // echos nothing
echo $x[1] // echos "bar"

如果将$ x [5]设置为“ foo”,则不会期望$ x [0]为“ foo”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM