PHP关联数组只有1个元素

seb*_*seb 0 php arrays associative-array

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

$resultat = $bd->Select($sql);
Run Code Online (Sandbox Code Playgroud)

foreach resultat在数组中,如果它们不符合要求,我将它们从我的数组中删除.

foreach($indexToRemove as $elem)
    unset($resultat[$elem]);
Run Code Online (Sandbox Code Playgroud)

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

$_SESSION['entrepriseTrouver'] = $resultat;
Run Code Online (Sandbox Code Playgroud)

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

        $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 "-------------------------------------------------------------------------------------------------------------------------------";
            }

        }
Run Code Online (Sandbox Code Playgroud)

当我没有元素或超过1个元素进入我的数组但是当我只有1个元素时,我无法使用索引0访问它

print_r($_SESSION['entrepriseTrouver'][0]);
Run Code Online (Sandbox Code Playgroud)

我只能使用密钥访问它.例如,我的BD返回20个元素并且我取消了除#17之外的所有元素,我将不得不以这种方式访问​​它

print_r($_SESSION['entrepriseTrouver'][17]);
Run Code Online (Sandbox Code Playgroud)

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

Roc*_*mat 5

在数组中取消设置值不会重新索引它.所以,你留下了一个数值为17的数组,就是这样.

使用array_values来解决这个问题.

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

print_r($_SESSION['entrepriseTrouver'][0]);
Run Code Online (Sandbox Code Playgroud)