如何纠正数组不正确的结果



我有一个有趣的问题,没有返回预期的结果。

我正在从数据库中拉出50个名字的列表,并将它们放入数组中,这工作得很好。然后我需要能够添加姓氏的首字母到数组中。当尝试这样做时,最终得到的数组只有{NAME} z,而不是预期的结果。这是我现在的代码

$init_array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
foreach($names as $id=>$name){
    foreach($init_array as $ks=>$vs){
        $names[$id] = $name . ' ' . $vs . '<br>';
    }
}


foreach($names as $id=>$name){
    echo $name . '<br>';
}

我的结果现在显示如下:

Arnetta z
Arnette z
Arnita z
Arnold z
Arnoldo z

实际上它应该显示:

Arnetta a
Arnetta b
Arnetta c

以此类推。我的问题是,数组对它能存储的数据量有限制吗?实际上,我设置了一个内存限制:

ini_set('memory_limit', '1024M');

并且代码将预期的姓氏的首字母添加到名称数组中似乎是正确的。我对代码的开发方式是否不正确?为达到预期的结果而调整代码的正确方法是什么?

提前感谢。

您正在将值覆盖到数组的相同索引,因此它包含数组的最后一个值尝试像这样的多维数组

$init_array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
foreach($names as $id=>$name){
    foreach($init_array as $ks=>$vs){
        $names[$id][] = $name . ' ' . $vs . '<br>';
    }
}

print_r($names);
$count=0;
foreach($names as $id=>$name){
    $names[$id] = $name . ' ' . $init_aray[$count]. '<br>';
    $count++;
}

最新更新