代码之家  ›  专栏  ›  技术社区  ›  Wyatt Jackson

如何修复“PHP警告:遇到非数值”错误?

php
  •  0
  • Wyatt Jackson  · 技术社区  · 8 年前

    我已经阅读了很多其他关于这个非数字值遇到错误的帖子,但不幸的是,我可能很密集。我不知道如何修正这个恼人的错误。

    这是我的代码块:

     foreach ($local_words as $local_word_to_check){
    
                    $letters = mb_str_split($local_word_to_check);
                    $letters = array_map( 'addslashes', $letters );
    
                    $local_total_letter_box_length = "";
    
                    $query2 = "SELECT GROUP_CONCAT(Alpha) AS Alpha,
                                     GROUP_CONCAT(Letter_Box_Width) AS Letter_Box_Width
                              FROM Font_Krinkes
                              WHERE Alpha IN ('" . implode("','", $letters) . "')";
    
                    $result2 = mysqli_query($con, $query2) or die("unable to query database!");
    
                    if ($row = mysqli_fetch_assoc($result2)) {
                        $widths = array_combine(explode(',', $row['Alpha']), explode(',', $row['Letter_Box_Width']));
                        $total_word_box_width = 0;
                        foreach (mb_str_split($local_word_to_check) as $letter) {
                            $local_total_letter_box_length += $widths[$letter];
                        }
                    }
    
                    $complete_font_values[] = $local_total_letter_box_length;  
    
                    unset($letters);
            }
    

    $local_total_letter_box_length += $widths[$letter];
    

    1 回复  |  直到 8 年前
        1
  •  10
  •   mickmackusa Tom Green    8 年前

    $local_total_letter_box_length = ""; 是首次声明时的字符串。

    $local_total_letter_box_length += $widths[$letter]

    使用 .=


    如果要增加数值,请用 0 .

    +=

    代码:( Demo )

    $integer = 5;
    $integer += 10;
    echo $integer , "\n---\n";
    
    
    $array = ['good' => 'one'];
    $array += ['two'];
    var_export($array);
    

    输出:

    15
    ---
    array (
      'good' => 'one',
      0 => 'two',
    )
    
        2
  •  2
  •   Ahmad Saad    7 年前

    使用

    $local_total_letter_box_length = 0; 
    

    $local_total_letter_box_length = "";
    
        3
  •  1
  •   Mohsen    6 年前

    大多数情况下,这种错误发生在使用时 "+" "." ,如果您将数字值作为字符串,则必须像 $num = (int) "10" + (int) "20";

    推荐文章