对于循环,不向数组添加正确数量的值

时间:2017-03-28 22:03:55

标签: php

我的for循环应该为数组添加9个值,但由于某种原因停止在6.这只会在我使用方括号语法将键和值添加到数组时发生。这是代码:

       $sentences = $this->sentences($sentence);
    $n = count($sentences);
    echo $n;
    $values = array();
    for($i = 0; $i < $n; $i++){
        $s1 = $sentences[$i];
        for($j = 0; $j < $n; $j++){
            $s2 = $sentences[$j];
            $values[$i][$j] = $this->checkvalues($s1,$s2);
        }
    }
    $sentences_dic = array();
    $other = array();
    $otherTwo = array();
    for($i = 0; $i < $n; $i++){
        $score = 0;
        for($j = 0; $j < $n; $j++){
            $score = $score+$values[$i][$j];

        }
        $other[$i] = $score;
        $otherTwo[$i] = $sentences[$i];
        $sentences_dic[($sentences[$i])]=$score;
        var_dump($otherTwo);
    }
    //maybe need
    return $sentences_dic;

我不确定为什么会这样。该阵列只是打印 这就是它的印刷品。应该打印第七,第八和第九个术语,但它不是。它不添加的所有术语都能够在其他两个阵列中打印。

Array
(
[first] => banana
[second] => banana2
[third] => banana3
[fourth] => banana4
[fifth] => banana5
[sixth] => banana6
)

应该打印所有9个值和键。我不明白为什么我能够将所有句子和分数全部添加到两个单独的数组(9),但是当我尝试使用方括号语法时,它只能达到6。

1 个答案:

答案 0 :(得分:0)

鉴于您的输出$sentences似乎是一个数组并且有重复项。数组键必须是唯一的,并且重写的键会被覆盖。

你可以为多维数组做这样的事情:

if(isset($sentences_dic[$sentences[$i]])) {
     $sentences_dic[$sentences[$i]][] = $score;
} else {
     $sentences_dic[$sentences[$i]] = $score;
}

或者对重复的分数求和:

if(isset($sentences_dic[$sentences[$i]])) {
     $sentences_dic[$sentences[$i]] += $score;
} else {
     $sentences_dic[$sentences[$i]] = $score;
}