下面将$ scpar切成两个类型,一个包含前9个,第二个包含前逗号分隔值,从10到18。
$scpar9 = array_slice($scpar,0,9);
$scpar18 = array_slice($scpar,9,18);
然后我们使用foreach并使用id参数$sid
从其他字段获取相同的逗号分隔值。
foreach ($scpar9 as $sid => $scpar) {
然后从这样的其他字段中获取信息。
<b>'.$scpar.'</b> '.$sccomp[$sid].$scmen[$sid].
一切正常,问题在于第二个9个字段。
foreach ($scpar18 as $sid => $scpar) {
<b>'.$scpar.'</b> '.$sccomp[$sid].$scmen[$sid].
字段$scpar
是正确的,但包含[$sid]
的字段是从第一个结果而不是第9个结果开始的。
有什么想法吗?
奇妙
答案 0 :(得分:1)
array_slice()
从原始数组创建包含值的新数组,而不是键。在原始数组的上下文中使用foreach
循环中的键是没有意义的,因为这些是来自新切片数组的键。
使用array_slice($scpar, 9, 18, true)
复制键,而不仅仅是值:
$scpar18 = array_slice($scpar, 9, 18, true);
# ^^^ preserve keys
答案 1 :(得分:1)
如果要保留键($ sid),则需要将array_slice的第四个参数设置为true,请参阅http://php.net/manual/en/function.array-slice.php
答案 2 :(得分:1)
您需要使用preserve_keys
preserve_keys: 请注意,array_slice()将重新排序并重置数组索引 默认情况下。您可以通过将preserve_keys设置为来更改此行为 TRUE。
$scpar18 = array_slice($scpar,9,18, true);