【问题标题】:arrays and index php数组和索引php
【发布时间】:2016-10-24 10:27:23
【问题描述】:

我在 java、jsp、javascript、c 和 c++ 等编程语言方面有一些经验,最近我开始使用 php,但可能有一些我不了解数组和数组索引的东西,因为我也收到了几行代码的许多错误。 我正在尝试在网上搜索,但找不到任何可以帮助我解决问题的东西。 这是我的代码:

$proposte_o = array();
$proposte_m = array();
$orachiusura = 18;
$durata = 30;
$ora_pre = array("10", "15");
$min_pre = array("30", "20");
$durata_pre = array("20", "40");
$oraproposta = 9;
$minuti = 0;
$ora_p = 13;
$ora_r = 15;
$i = 0;
$a = 0;
while ($orachiusura - $oraproposta > 1 && 60 - $minuti >= $durata && $i <= $ora_pre.length) {
    if ($ora_p - $oraproposta <= 0) {
        $oraproposta = $ora_r;
        $minuti = 0;
    } else if ($ora_p - $oraproposta = 1 && $minuti + $durata >= 60) {
        $oraproposta = $ora_r;
        $minuti = 0;
    }
    if (ora_pre[i] - oraproposta > 0) {
        $proposte_o[a] = $oraproposta;
        $proposte_m[a] = $minuti;
        $a++;
        if ($minuti += $durata = 60) {
            $oraproposta += 1;
            $minuti = 0;
        } else if ($minuti += $durata > 60) {
            $oraproposta += 1;
            $minuti = 60 - $minuti;
            $minuti = $durata - $minuti;
        } else if ($minuti += $durata < 60) {
            $minuti += $durata;
        }
    } else if (visite_pre[i] - oraproposta == 0) {
        if ($min_pre[i] - minuti > $durata) {
            $proposte_o[a] = $oraproposta;
            $proposte_m[a] = $minuti;
            $a++;
            if ($minuti += $durata = 60) {
                $oraproposta += 1;
                $minuti = 0;
            } else if ($minuti += $durata > 60) {
                $oraproposta += 1;
                $minuti = 60 - $minuti;
                $minuti = $durata - $minuti;
            } else if ($minuti += $durata < 60) {
                $minuti += $durata;
            }
        } else {
            if ($min_pre[i] + durata_pre[i] < 60) {
                $oraproposta = $ora_pre[i];
                $minuti = $min_pre[i] + durata_pre[i];
                $i++;
            } else if ($min_pre[i] + durata_pre[i] == 60) {
                $oraproposta = $ora_pre[i] + 1;
                $minuti = 0;
                $i++;
            } else if ($min_pre[i] + durata_pre[i] > 60) {
                $oraproposta = $ora_pre[i] + 1;
                $minuti = 60 - $minuti;
                $minuti = $durata - $minuti;
                $i++;
            }
        }
    } else if (visite_pre[i] - oraproposta < 0) {
        if ($min_pre[i] + durata_pre[i] < 60) {
            $oraproposta = $ora_pre[i];
            $minuti = $min_pre[i] + durata_pre[i];
            $i++;
        } else if ($min_pre[i] + durata_pre[i] == 60) {
            $oraproposta = $ora_pre[i] + 1;
            $minuti = 0;
            $i++;
        } else if ($min_pre[i] + durata_pre[i] > 60) {
            $oraproposta = $ora_pre[i] + 1;
            $minuti = 60 - $minuti;
            $minuti = $durata - $minuti;
            $i++;
        }
    }
}

对于此代码,我收到很多错误,即:

Notice: Use of undefined constant length - assumed 'length' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 22

Notice: Array to string conversion in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 22

Notice: Use of undefined constant ora_pre - assumed 'ora_pre' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 30

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 30

Warning: Illegal string offset 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 30

Notice: Use of undefined constant oraproposta - assumed 'oraproposta' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 30

Notice: Use of undefined constant visite_pre - assumed 'visite_pre' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 44

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 44

Warning: Illegal string offset 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 44

Notice: Use of undefined constant oraproposta - assumed 'oraproposta' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 44

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 45

Notice: Undefined index: i in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 45

Notice: Use of undefined constant minuti - assumed 'minuti' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 45

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 60

Notice: Undefined index: i in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 60

Notice: Use of undefined constant durata_pre - assumed 'durata_pre' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 60

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 60

Warning: Illegal string offset 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 60

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 61

Notice: Undefined index: i in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 61

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 62

Notice: Undefined index: i in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 62

Notice: Use of undefined constant durata_pre - assumed 'durata_pre' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 62

Notice: Use of undefined constant i - assumed 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 62

Warning: Illegal string offset 'i' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 62

Notice: Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 91

Notice: Undefined index: a in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 91

Notice: Use of undefined constant a - assumed 'a' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 92

Notice: Undefined index: a in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 92

Notice: Use of undefined constant length - assumed 'length' in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 22

Notice: Array to string conversion in C:\xampp\htdocs\ShuttleFIX\proposte.php on line 22

在我的文件中,第 22 行是存在 while 条件的行。 有人能帮我吗? 谢谢

【问题讨论】:

  • $ora_pre.length 无效 PHP 使用 count($ora_pre) 获取数组长度
  • 请学会调试/修复你自己的错误,这些是基本错误,如果你一个一个去解决,就很容易解决。

标签: php arrays indexing


【解决方案1】:

您有许多不以美元 ($) 开头的变量。在 PHP 中,所有变量都必须以美元开头。

代码中的 .length 不是 PHP 中的函数。而是使用 count($array);

我更正了您的代码。 请检查第 37 行和第 68 行中的数组 $visite_pre,它在您的代码中的任何地方都没有提及并返回错误。

<?php
$proposte_o = array();
$proposte_m = array();
$orachiusura = 18;
$durata = 30;
$ora_pre = array("10", "15");
$min_pre = array("30", "20");
$durata_pre = array("20", "40");
$oraproposta = 9;
$minuti = 0;
$ora_p = 13;
$ora_r = 15;
$i = 0;
$a = 0;
while ($orachiusura - $oraproposta > 1 && 60 - $minuti >= $durata && $i <= count($ora_pre)) {
    if ($ora_p - $oraproposta <= 0) {
        $oraproposta = $ora_r;
        $minuti = 0;
    } else if ($ora_p - $oraproposta = 1 && $minuti + $durata >= 60) {
        $oraproposta = $ora_r;
        $minuti = 0;
    }
    if ($ora_pre[$i] - $oraproposta > 0) {
        $proposte_o[$a] = $oraproposta;
        $proposte_m[$a] = $minuti;
        $a++;
        if ($minuti += $durata = 60) {
            $oraproposta += 1;
            $minuti = 0;
        } else if ($minuti += $durata > 60) {
            $oraproposta += 1;
            $minuti = 60 - $minuti;
            $minuti = $durata - $minuti;
        } else if ($minuti += $durata < 60) {
            $minuti += $durata;
        }
    } else if ($visite_pre[$i] - $oraproposta == 0) {
        if ($min_pre[$i] - $minuti > $durata) {
            $proposte_o[$a] = $oraproposta;
            $proposte_m[$a] = $minuti;
            $a++;
            if ($minuti += $durata = 60) {
                $oraproposta += 1;
                $minuti = 0;
            } else if ($minuti += $durata > 60) {
                $oraproposta += 1;
                $minuti = 60 - $minuti;
                $minuti = $durata - $minuti;
            } else if ($minuti += $durata < 60) {
                $minuti += $durata;
            }
        } else {
            if ($min_pre[$i] + $durata_pre[$i] < 60) {
                $oraproposta = $ora_pre[$i];
                $minuti = $min_pre[$i] + $durata_pre[$i];
                $i++;
            } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
                $oraproposta = $ora_pre[$i] + 1;
                $minuti = 0;
                $i++;
            } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
                $oraproposta = $ora_pre[$i] + 1;
                $minuti = 60 - $minuti;
                $minuti = $durata - $minuti;
                $i++;
            }
        }
    } else if ($visite_pre[$i] - $oraproposta < 0) {
        if ($min_pre[$i] + $durata_pre[$i] < 60) {
            $oraproposta = $ora_pre[$i];
            $minuti = $min_pre[$i] + $durata_pre[$i];
            $i++;
        } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
            $oraproposta = $ora_pre[$i] + 1;
            $minuti = 0;
            $i++;
        } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
            $oraproposta = $ora_pre[$i] + 1;
            $minuti = 60 - $minuti;
            $minuti = $durata - $minuti;
            $i++;
        }
    }
}

【讨论】:

  • 谢谢,我解决了错误,但数组“proposte_o”和“proposte_a”为空。我上传错了?
  • 您可以使用以下语法填充数组 $proposte_o = array('value1', 'value2', 'value3');或 $proposte_o = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
  • 是的,我知道填充数组的方法是这样,但我的问题是,在循环中我也必须使用该语法吗?谢谢
  • 我不确定我是否正确理解了您的问题。在代码中定义了数组后,您可以使用以下语法在任何地方填充数组 $proposte_o[] = 'value';或 $proposte_o['key'] = 'value';
  • 是的,所以在我的代码中语法正确吗?因为它只用一个值“1”填充我的数组,而且它不正确
【解决方案2】:

您使用了 php 之外的函数。例如 .length 无效。

要获取数组的大小试试这个

sizeof($ora_pre);

此外,您还没有将 $ 用于您定义的变量。请检查我已经为你更新了代码。

$proposte_o = array();
$proposte_m = array();
$orachiusura = 18;
$durata = 30;
$ora_pre = array("10", "15");
$min_pre = array("30", "20");
$durata_pre = array("20", "40");
$oraproposta = 9;
$minuti = 0;
$ora_p = 13;
$ora_r = 15;
$i = 0;
$a = 0;
while ($orachiusura - $oraproposta > 1 && 60 - $minuti >= $durata && $i <= sizeof($ora_pre)) {
    if ($ora_p - $oraproposta <= 0) {
        $oraproposta = $ora_r;
        $minuti = 0;
    } else if ($ora_p - $oraproposta = 1 && $minuti + $durata >= 60) {
        $oraproposta = $ora_r;
        $minuti = 0;
    }
    if ($ora_pre[$i] - $oraproposta > 0) {
        $proposte_o[$a] = $oraproposta;
        $proposte_m[$a] = $minuti;
        $a++;
        if ($minuti += $durata = 60) {
            $oraproposta += 1;
            $minuti = 0;
        } else if ($minuti += $durata > 60) {
            $oraproposta += 1;
            $minuti = 60 - $minuti;
            $minuti = $durata - $minuti;
        } else if ($minuti += $durata < 60) {
            $minuti += $durata;
        }
    } else if ($visite_pre[$i] - $oraproposta == 0) {
        if ($min_pre[$i] - $minuti > $durata) {
            $proposte_o[$a] = $oraproposta;
            $proposte_m[$a] = $minuti;
            $a++;
            if ($minuti += $durata = 60) {
                $oraproposta += 1;
                $minuti = 0;
            } else if ($minuti += $durata > 60) {
                $oraproposta += 1;
                $minuti = 60 - $minuti;
                $minuti = $durata - $minuti;
            } else if ($minuti += $durata < 60) {
                $minuti += $durata;
            }
        } else {
            if ($min_pre[$i] + $durata_pre[$i] < 60) {
                $oraproposta = $ora_pre[$i];
                $minuti = $min_pre[$i] + $durata_pre[$i];
                $i++;
            } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
                $oraproposta = $ora_pre[$i] + 1;
                $minuti = 0;
                $i++;
            } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
                $oraproposta = $ora_pre[$i] + 1;
                $minuti = 60 - $minuti;
                $minuti = $durata - $minuti;
                $i++;
            }
        }
    } else if ($visite_pre[$i] - $oraproposta < 0) {
        if ($min_pre[$i] + $durata_pre[$i] < 60) {
            $oraproposta = $ora_pre[$i];
            $minuti = $min_pre[$i] + $durata_pre[$i];
            $i++;
        } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
            $oraproposta = $ora_pre[$i] + 1;
            $minuti = 0;
            $i++;
        } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
            $oraproposta = $ora_pre[$i] + 1;
            $minuti = 60 - $minuti;
            $minuti = $durata - $minuti;
            $i++;
        }
    }
}

【讨论】:

    【解决方案3】:

    那是因为您使用的是i,但您已经声明了$ii 没有美元符号(我忘了它是怎么叫的)意味着你正在寻找一个常数,一个你没有定义的常数。

    这里也有

    else if (visite_pre[i] - oraproposta == 0) {
    

    在调用声明的变量时,您将始终使用$

    length 也不是一个已知的命令/函数,如果你想计算数组中的值,你会使用count( $array )

    此外,当使用类方法时,您应该使用 -&gt; 而不是点。

    在 PHP 中,点 . 用于连接字符串,如下所示:

    $str1 = "Hello";
    $str2 = "world!";
    
    $str3 = $str1 . " " . $str2;
    
    echo $str3; //Hello world!
    

    【讨论】:

      【解决方案4】:
      1. 获取数组长度使用count($array);
      2. 所有变量都应以$ 开头。
      3. 我看到$visite_pre 变量之前没有定义。

        <?php
        $proposte_o = array();
        $proposte_m = array();
        $orachiusura = 18;
        $durata = 30;
        $ora_pre = array("10", "15");
        $min_pre = array("30", "20");
        $durata_pre = array("20", "40");
        $oraproposta = 9;
        $minuti = 0;
        $ora_p = 13;
        $ora_r = 15;
        $i = 0;
        $a = 0;
        while ($orachiusura - $oraproposta > 1 && 60 - $minuti >= $durata && $i <= count($ora_pre)) {
            if ($ora_p - $oraproposta <= 0) {
                $oraproposta = $ora_r;
                $minuti = 0;
            } else if ($ora_p - $oraproposta = 1 && $minuti + $durata >= 60) {
                $oraproposta = $ora_r;
                $minuti = 0;
            }
            if ($ora_pre[$i] - $oraproposta > 0) {
                $proposte_o[$a] = $oraproposta;
                $proposte_m[$a] = $minuti;
                $a++;
                if ($minuti += $durata = 60) {
                    $oraproposta += 1;
                    $minuti = 0;
                } else if ($minuti += $durata > 60) {
                    $oraproposta += 1;
                    $minuti = 60 - $minuti;
                    $minuti = $durata - $minuti;
                } else if ($minuti += $durata < 60) {
                    $minuti += $durata;
                }
            } else if ($visite_pre[$i] - $oraproposta == 0) {
                if ($min_pre[$i] - $minuti > $durata) {
                    $proposte_o[$a] = $oraproposta;
                    $proposte_m[$a] = $minuti;
                    $a++;
                    if ($minuti += $durata = 60) {
                        $oraproposta += 1;
                        $minuti = 0;
                    } else if ($minuti += $durata > 60) {
                        $oraproposta += 1;
                        $minuti = 60 - $minuti;
                        $minuti = $durata - $minuti;
                    } else if ($minuti += $durata < 60) {
                        $minuti += $durata;
                    }
                } else {
                    if ($min_pre[$i] + $durata_pre[$i] < 60) {
                        $oraproposta = $ora_pre[$i];
                        $minuti = $min_pre[$i] + $durata_pre[$i];
                        $i++;
                    } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
                        $oraproposta = $ora_pre[$i] + 1;
                        $minuti = 0;
                        $i++;
                    } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
                        $oraproposta = $ora_pre[$i] + 1;
                        $minuti = 60 - $minuti;
                        $minuti = $durata - $minuti;
                        $i++;
                    }
                }
            } else if ($visite_pre[$i] - $oraproposta < 0) {
                if ($min_pre[$i] + $durata_pre[$i] < 60) {
                    $oraproposta = $ora_pre[$i];
                    $minuti = $min_pre[$i] + $durata_pre[$i];
                    $i++;
                } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
                    $oraproposta = $ora_pre[$i] + 1;
                    $minuti = 0;
                    $i++;
                } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
                    $oraproposta = $ora_pre[$i] + 1;
                    $minuti = 60 - $minuti;
                    $minuti = $durata - $minuti;
                    $i++;
                }
            }
        }
            ?>
        

      【讨论】:

        【解决方案5】:

        @Edoardo 似乎您是 php 新手,这就是为什么我认为您忘记在每个地方都使用 $ 和变量,而这些所有错误都是因为这个而发生的,您还忘记了 $visite_pre您在代码中使用的数组,因此请声明它并在 php 中定义值和主要内容,如果您必须获取数组计数,请使用 count($array) 函数,而不是 $array.length,因为这不是 Java 语言。 . 用下面的代码更正它

        <?php
            $proposte_o = array();
            $proposte_m = array();
            $orachiusura = 18;
            $durata = 30;
            $ora_pre = array("10", "15");
            $min_pre = array("30", "20");
            $durata_pre = array("20", "40");
            $oraproposta = 9;
            $minuti = 0;
            $visite_pre = array(); //now define your array values here
            $ora_p = 13;
            $ora_r = 15;
            $i = 0;
            $a = 0;
            while ($orachiusura - $oraproposta > 1 && 60 - $minuti >= $durata && $i <= count($ora_pre)) { // replaced $ora_pre.length by count($ora_pre) because in php by this we get the length of an array
                if ($ora_p - $oraproposta <= 0) {
                    $oraproposta = $ora_r;
                    $minuti = 0;
                } else if ($ora_p - $oraproposta = 1 && $minuti + $durata >= 60) {
                    $oraproposta = $ora_r;
                    $minuti = 0;
                }
                if ($ora_pre[$i] - $oraproposta > 0) { // you did not use $ here so correct it
                    $proposte_o[$a] = $oraproposta;  // here also you forget $
                    $proposte_m[$a] = $minuti;      // here also you forget $                           
                    $a++;
                    if ($minuti += $durata = 60) {
                        $oraproposta += 1;
                        $minuti = 0;
                    } else if ($minuti += $durata > 60) {
                        $oraproposta += 1;
                        $minuti = 60 - $minuti;
                        $minuti = $durata - $minuti;
                    } else if ($minuti += $durata < 60) {
                        $minuti += $durata;
                    }
                } else if ($visite_pre[$i] - $oraproposta == 0) {  // forget $
                    if ($min_pre[$i] - $minuti > $durata) {  // forget $
                        $proposte_o[$a] = $oraproposta;
                        $proposte_m[$a] = $minuti;
                        $a++;
                        if ($minuti += $durata = 60) {
                            $oraproposta += 1;
                            $minuti = 0;
                        } else if ($minuti += $durata > 60) {
                            $oraproposta += 1;
                            $minuti = 60 - $minuti;
                            $minuti = $durata - $minuti;
                        } else if ($minuti += $durata < 60) {
                            $minuti += $durata;
                        }
                    } else {
                        if ($min_pre[$i] + $durata_pre[$i] < 60) {    // forget $
                            $oraproposta = $ora_pre[$i];                     // forget $
                            $minuti = $min_pre[$i] + $durata_pre[$i];       // forget $
                            $i++;
                        } else if ($min_pre[$i] + $durata_pre[$i] == 60) {
                            $oraproposta = $ora_pre[$i] + 1;
                            $minuti = 0;
                            $i++;
                        } else if ($min_pre[$i] + $durata_pre[$i] > 60) {
                            $oraproposta = $ora_pre[$i] + 1;
                            $minuti = 60 - $minuti;
                            $minuti = $durata - $minuti;
                            $i++;
                        }
                    }
                } else if ($visite_pre[$i] - $oraproposta < 0) {  // forget $ and forget to declare $visite_pre so declare it
                    if ($min_pre[$i] + $durata_pre[$i] < 60) {    // forget $
                        $oraproposta = $ora_pre[$i];                // forget $
                        $minuti = $min_pre[$i] + $durata_pre[$i]; // forget $
                        $i++;
                    } else if ($min_pre[$i] + $durata_pre[$i] == 60) {  // forget $
                        $oraproposta = $ora_pre[$i] + 1;            // forget $
                        $minuti = 0;
                        $i++;
                    } else if ($min_pre[$i] + $durata_pre[$i] > 60) {  // forget $
                        $oraproposta = $ora_pre[$i] + 1;    // forget $
                        $minuti = 60 - $minuti; 
                        $minuti = $durata - $minuti;
                        $i++;
                    }
                }
            }
        
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 2011-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-05
          • 2014-11-25
          相关资源
          最近更新 更多