我有一个带有数组值的foreach循环,我的问题是我需要让$ key的值从1开始而不是0。
我的代码
multiprocessing.Lock
输出
if(isset($_POST['sp_criteria'])){
$sp_criteria = $_POST['sp_criteria'];
$sp_criterias = array();
$count = 1;
foreach ($sp_criteria as $key => $value) {
$sp_criterias[$count] = $value;
$count++;
}
}
我如何让它像这样?
[0] - 10 sp_criteria
[1] - 15 sp_criteria
[2] - 15sp_criteria
[3] - 20 sp_criteria
[4] - 25 sp_criteria
[5] - 15 sp_criteria
答案 0 :(得分:0)
为什么你不去($ key + 1)有什么特别的原因:
if(isset($_POST['sp_criteria'])){
$sp_criteria = $_POST['sp_criteria'];
$sp_criterias = array();
$count = 1;
foreach ($sp_criteria as $key => $value) {
$sp_criterias[$count] = $value;
echo $value." - ".($key + 1)." sp_criteria<br/>";
$count++;
}
}
答案 1 :(得分:0)
变化:
if(isset($_POST['sp_criteria'])){
$sp_criteria = $_POST['sp_criteria'];
$sp_criterias = array();
$count = 1;
foreach ($sp_criteria as $key => $value) {
$sp_criterias[$count] = $value;
echo $value." - ".$key." sp_criteria<br/>";
$count++;
}
}
为:
if(isset($_POST['sp_criteria'])){
$sp_criteria = $_POST['sp_criteria'];
$sp_criterias = array();
$count = 1;
foreach ($sp_criteria as $key => $value) {
$sp_criterias[$count] = $value;
echo $value." - ". ( $key + 1 ) ." sp_criteria<br/>";
$count++;
}
}
答案 2 :(得分:0)
echo $value." - ".(int)$key+1." sp_criteria<br/>";
如果您的密钥始终为数字,则可以使用更简单的用于循环,而不是 foreach 。
答案 3 :(得分:0)
只需输入foreach循环$ key ++;
答案 4 :(得分:0)
当然,您无法修改数组的索引。但你可以取消你的数组,然后取消设置第一项。
array_unshift($sp_criteria, '');
unset($sp_criteria[0]);
或者您可以创建一个从1开始的数组,如下所示:
$sp_criteria = [1 => 'a', 'b', 'c'];
但我不是这种方式的粉丝。通常,数组从0开始,我们应该始终保持这种一致性。如果某些数组从0开始而其他数组从1开始,则很难处理它们。有时您认为using数组从1开始,但实际上它从0开始。因此,这可能会导致意外错误。