Hướng dẫn php undefined index even though it exists - chỉ mục không xác định php mặc dù nó tồn tại

Nó khiến tôi phát điên ... Tôi cố gắng phân tích tệp CSV và có một hành vi rất lạ.

Đây là CSV

action;id;nom;sites;heures;jours
i;;"un nom a la con";1200|128;;1|1|1|1|1|1|1

Bây giờ mã PHP

$required_fields = array('id','nom','sites','heures','jours');
if (($handle = fopen($filename, "r")) !== FALSE)
{
    $cols = 0;
    while (($row = fgetcsv($handle, 1000, ";")) !== FALSE)
    {
        $row = array_map('trim',$row);
        // Identify headers
        if(!isset($headers))
        {
            $cols = count($row);
            for($i=0;$i<$cols;$i++) $headers[strtolower($row[$i])] = $i;
            foreach($required_fields as $val) if(!isset($headers[$val])) break 2;
            $headers = array_flip($headers);
            print_r($headers);
        }
        elseif(count($row) >= 4)
        {
            $temp = array();
            for($i=0;$i<$cols;$i++)
            {
                if(isset($headers[$i]))
                {
                    $temp[$headers[$i]] = $row[$i];
                }
            }
            print_r($temp);
            print_r($temp['action']);
            var_dump(array_key_exists('action',$temp));
            die();
        }
    }
}

Và đầu ra

Array
(
    [0] => action
    [1] => id
    [2] => nom
    [3] => sites
    [4] => heures
    [5] => jours
)
Array
(
    [action] => i
    [id] => 
    [nom] => un nom a la con
    [sites] => 1200|128
    [heures] => 
    [jours] => 1|1|1|1|1|1|1
)
<b>Notice</b>:  Undefined index: action in <b>index.php</b> on line <b>110</b>
bool(false)

"Hành động" chính tồn tại trong $ TEMP nhưng $temp['action'] returns Undefinedarray_key_exists returns false. Tôi đã thử với một tên khóa khác, nhưng vẫn giống nhau. Và hoàn toàn không có vấn đề với các chìa khóa khác.

Có gì sai với điều này?

PS: line 110 is the print_r($temp['action']);

Chỉnh sửa 1

Nếu tôi thêm một trường trống khác trong CSV khi bắt đầu từng dòng, hãy hiển thị hành động một cách chính xác

;action;id;nom;sites;heures;jours
;i;;"un nom a la con";1200|128;;1|1|1|1|1|1|1

PHP là ngôn ngữ kịch bản được sử dụng rộng rãi chủ yếu được sử dụng cho mục đích phát triển web. Đó là một ngôn ngữ kịch bản và tìm thấy ứng dụng trong các tác vụ tự động hóa mà không thể thực hiện chỉ với sự can thiệp của con người. Là một ngôn ngữ phía máy chủ, nó chủ yếu chăm sóc mọi thứ ở cuối máy chủ. Ra mắt vào năm 1995 để sử dụng công cộng, nó vẫn là một lựa chọn phổ biến trong số các nhà phát triển web kể từ đó.

Lập trình là một công việc khó khăn. Nó là khá bình thường để vấp ngã vì lỗi và cảnh báo trong khi thực hiện một chương trình. Điều tương tự cũng xảy ra với các nhà phát triển PHP, như khi họ phải đối mặt với một chỉ số không xác định trong PHP. Tuy nhiên, những lỗi như vậy không khó để đối phó với một chút kiến ​​thức và hướng dẫn.

Lỗi chỉ số PHP không xác định là gì?

Các trang web thường sử dụng các biểu mẫu để thu thập dữ liệu từ khách truy cập. PHP sử dụng các phương thức $ get và $ post cho việc thu thập dữ liệu như vậy. Dữ liệu này được thu thập và lưu trong các biến được trang web sử dụng để làm việc và phục vụ khách truy cập hơn nữa. Nhiều lần, một số trường được người dùng để trống. Nhưng trang web cố gắng đề cập đến các lĩnh vực này để tiếp tục tiếp tục. Điều đó có nghĩa là mã PHP cố gắng để có được giá trị của trường mà không ai xác định được và do đó không tồn tại. Khá mong đợi, nó không hoạt động và nêu ra một thông báo gọi là & nbsp; Chỉ mục không xác định & nbsp; trong PHP.

Code: 

$ name = $ _get ['name'];

$ name = $ _get ['name'];

$ AGE = $ _GET ['Tuổi'];

$ Lớp = $ _Get [‘Lớp];

echo 'Tên:'. $ Tên;

Echo 'Tuổi:'. $ Tuổi;

Echo ‘Lớp:‘. $ Lớp;

?>

Result: 

Undefined_Index_Php_1

Bạn có thể sửa nó bằng hàm isset (), mà chúng tôi sẽ thảo luận thêm trong các phần sắp tới.

Chỉ số không xác định là một thông báo trong PHP và đó là một lựa chọn của nhà phát triển để bỏ qua nó hoặc sửa nó.

Làm thế nào để bỏ qua thông báo PHP: Chỉ mục không xác định?

Chỉ số không xác định trong PHP là một thông báo được tạo bởi ngôn ngữ. Cách đơn giản nhất để bỏ qua một thông báo như vậy là yêu cầu PHP ngừng tạo các thông báo như vậy. Bạn có thể thêm một dòng mã nhỏ ở đầu trang PHP hoặc chỉnh sửa trường & nbsp; error_reporting & nbsp; trong tệp php.ini.

1. Thêm mã ở đầu trang

Một cách đơn giản để yêu cầu PHP để vô hiệu hóa báo cáo thông báo là đặt một dòng mã ở đầu trang PHP.

Code:

 

Hoặc bạn có thể thêm mã sau để dừng tất cả các báo cáo lỗi,

 

2. Thay đổi trong php.ini & nbsp;

Php.ini là một tệp cấu hình và rất cần thiết cho tất cả các chương trình chạy trên PHP. Mở tệp này và tìm trường & nbsp; error_Reporting. Cách dễ nhất là sử dụng phím tắt Ctrl + F. Theo mặc định, báo cáo lỗi được đặt thành e_all. Điều đó có nghĩa là tất cả các lỗi được báo cáo. Thay đổi điều này thành e_all & ~ e_notice. Nó có nghĩa là tất cả các lỗi ngoại trừ các thông báo bây giờ sẽ được báo cáo.

Làm thế nào để khắc phục thông báo PHP: Chỉ mục không xác định?

Chúng tôi biết nguyên nhân của lỗi. Nó xảy ra khi chúng tôi sử dụng các phương thức $ _GET và $ _POST để nhận đầu vào, nhưng chúng tôi tham khảo nó ngay cả khi nó chưa được đặt. Giải pháp chỉ đơn giản là kiểm tra xem nó đã được đặt trước khi tham khảo.

Chúng ta có thể sử dụng hàm isset (), trong đó kiểm tra xem biến có được đặt hay không trước khi tham chiếu đến chúng. Hàm isset () trả về đúng hoặc sai tùy thuộc vào nó.

Chỉ mục không xác định trong PHP $ _GET

Khi sử dụng phương thức $ _GET, mã sau có thể hiển thị chỉ mục không xác định trong PHP:

Code:

$ name = $ _get ['name'];

$ name = $ _get ['name'];

$ AGE = $ _GET ['Tuổi'];

$ Lớp = $ _Get [‘Lớp];

echo 'Tên:'. $ Tên;

Echo 'Tuổi:'. $ Tuổi;

Echo ‘Lớp:‘. $ Lớp;

?>

Bạn có thể sửa nó bằng hàm isset (), mà chúng tôi sẽ thảo luận thêm trong các phần sắp tới.

Chỉ số không xác định là một thông báo trong PHP và đó là một lựa chọn của nhà phát triển để bỏ qua nó hoặc sửa nó.

Code:

$ name = $ _get ['name'];

if(isset($_GET['name'])){

$ name = $ _get ['name'];

}else{

$ AGE = $ _GET ['Tuổi'];

$ Lớp = $ _Get [‘Lớp];

if(isset($_GET['age'])){

echo 'Tên:'. $ Tên;

}else{

Echo 'Tuổi:'. $ Tuổi;

$ Lớp = $ _Get [‘Lớp];

if(isset($_GET['grade'])){

echo 'Tên:'. $ Tên;

}else{

Echo 'Tuổi:'. $ Tuổi;

$ Lớp = $ _Get [‘Lớp];

echo 'Tên:'. $ Tên;

Echo 'Tuổi:'. $ Tuổi;

Echo ‘Lớp:‘. $ Lớp;

?>

Result: 

undefined_Index_Php_2.

Thay vào đó, chúng ta có thể sử dụng một dòng mã như thế này.

Code:

$ name = $ _get ['name'];

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

Echo ‘Tên:‘. $ Tên;

?>

Cách tiếp cận này cũng đạt được mục tiêu dự định.

Result:

undefined_Index_Php_3.

Chú ý: Biến không xác định

PHP hiển thị thông báo này khi chúng tôi cố gắng sử dụng một biến ngay cả trước khi xác định nó.

Code:

$ name = $ _get ['name'];

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

$ name = $ _get ['name'];

Result:

undefined_Index_Php_4

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

Code:

$ name = $ _get ['name'];

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

if(isset($name))

Echo ‘Tên:‘. $ Tên;

Cách tiếp cận này cũng đạt được mục tiêu dự định.

?>

Result: 

undefined_Index_Php_5.

Chú ý: Biến không xác định

Code: 

$ name = $ _get ['name'];

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

Echo ‘Tên:‘. $ Tên;

?>

Result:

undefined_Index_Php_6.

Cách tiếp cận này cũng đạt được mục tiêu dự định.

Chú ý: Biến không xác định

PHP hiển thị thông báo này khi chúng tôi cố gắng sử dụng một biến ngay cả trước khi xác định nó.

Code:

$ name = $ _get ['name'];

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

Echo ‘Tên:‘. $ Tên;

?>

Result:

Cách tiếp cận này cũng đạt được mục tiêu dự định.

undefined_Index_Php_7.

Chú ý: Biến không xác định

Code: 

$ name = $ _get ['name'];

$ name = ISSET ($ _ Nhận [‘Tên])? $ _Get [‘name,]: John John- Đây là tên mặc định của chúng tôi;

Echo ‘Tên:‘. $ Tên;

Cách tiếp cận này cũng đạt được mục tiêu dự định.

if(isset($nameArray[3]))

Chú ý: Biến không xác định

    }

PHP hiển thị thông báo này khi chúng tôi cố gắng sử dụng một biến ngay cả trước khi xác định nó.

if(isset($nameArray[1]))

$ echo $ name;

Nó có thể được giải quyết bằng cách khai báo một biến toàn cầu và sau đó sử dụng isset () để xem nó có được đặt hay không. Nó chỉ có thể được lặp lại nếu nó đã được đặt. Ngoài ra, chúng ta có thể sử dụng & nbsp; isset (x)? Y & nbsp; để đặt mặc định.

tên toàn cầu $;

Cách tiếp cận này cũng đạt được mục tiêu dự định.

Chú ý: Biến không xác định

PHP hiển thị thông báo này khi chúng tôi cố gắng sử dụng một biến ngay cả trước khi xác định nó.

$ echo $ name;

Nó có thể được giải quyết bằng cách khai báo một biến toàn cầu và sau đó sử dụng isset () để xem nó có được đặt hay không. Nó chỉ có thể được lặp lại nếu nó đã được đặt. Ngoài ra, chúng ta có thể sử dụng & nbsp; isset (x)? Y & nbsp; để đặt mặc định.

Cách tiếp cận này cũng đạt được mục tiêu dự định.

if(!empty($nameArray[3]))

Chú ý: Biến không xác định

PHP hiển thị thông báo này khi chúng tôi cố gắng sử dụng một biến ngay cả trước khi xác định nó.

if(!empty($nameArray[4]))

$ echo $ name;

?>

Result:

undefined_Index_Php_8.

Nó có thể được giải quyết bằng cách khai báo một biến toàn cầu và sau đó sử dụng isset () để xem nó có được đặt hay không. Nó chỉ có thể được lặp lại nếu nó đã được đặt. Ngoài ra, chúng ta có thể sử dụng & nbsp; isset (x)? Y & nbsp; để đặt mặc định.

tên toàn cầu $;

{echo $ name;

Làm cách nào để sửa chữa chỉ mục không xác định trong PHP?

Chỉ số không xác định trong PHP là một thông báo được tạo bởi ngôn ngữ. Cách đơn giản nhất để bỏ qua một thông báo như vậy là yêu cầu PHP ngừng tạo các thông báo như vậy. Bạn có thể thêm một dòng mã nhỏ ở đầu trang PHP hoặc chỉnh sửa trường Error_Reporting trong PHP. Tệp INI.ask PHP to stop generating such notices. You can either add a small line of code at the top of the PHP page or edit the field error_reporting in the php. ini file.

Làm thế nào để bạn ẩn một chỉ mục không xác định?

Các lỗi chỉ mục không xác định có thể được giải quyết bằng cách sử dụng hàm gọi là hàm isset ().Có thể bỏ qua các lỗi chỉ mục không xác định bằng cách cập nhật tùy chọn Error_Reporting lên ~ e_notice để vô hiệu hóa báo cáo các thông báo.updating the option error_reporting to ~E_NOTICE to disable the reporting of notices.

Làm thế nào để bạn sửa lỗi khóa mảng không xác định trong PHP?

Làm thế nào để giải quyết cảnh báo: Lỗi chính mảng không xác định?Để giải quyết cảnh báo: Lỗi chính không được xác định, bạn chỉ cần kiểm tra xem những gì bạn đang cố gắng để có được giá trị có tồn tại hay không để bạn phải sử dụng ISSET.Chỉ như thế này.Bây giờ, lỗi của bạn phải được giải quyết.check that what you are trying to get value is exists or Not So you have to use isset. Just like this. Now, Your error must be solved.

Nó có nghĩa là chỉ số không xác định?

Chỉ mục không xác định là lỗi thông thường xuất hiện khi chúng tôi cố gắng truy cập biến không tồn tại.Chẳng hạn, một mảng mà chúng tôi đang cố gắng truy cập chỉ mục không thực sự tồn tại trong đó, vì vậy trong kịch bản này, chúng tôi sẽ nhận được một chỉ mục không xác định trong PHP.the usual error that comes up when we try to access the variable which does not persist. For instance, an array we are trying to access the index does not really exist in that, so in this scenario, we will get an Undefined Index in PHP.