簡體   English   中英

使用數組時發生PHP錯誤

[英]PHP error while using array

我從以下代碼的第一行得到此錯誤:

    Fatal error: Only variables can be passed by reference in /home/path/file.php on line 36



        if (isset($_POST['id']))
        {
            $ids = array_walk('intval', $_POST['id']);

            $sql = "DELETE FROM table WHERE id IN (' . implode(',', $ids) . ')')";
            //run query here

            $msg->type = "success";
            $msg->text = "Bulk delete has been successful";
        }

有什么想法嗎?

順便說一句,上面的代碼是批量刪除項目。

錯誤是由$ids = array_walk('intval', $_POST['id']);

您對array_walk函數的調用不正確

bool array_walk ( array &$array , callback $funcname [, mixed $userdata = NULL ] )

試試這個,並假設$_POST['id']是一個數組

$ids = array_walk($_POST['id'], 'intval');

http://php.net/manual/zh/function.array-walk.php

同樣最好在調用函數之前進行檢查,以確保$_POST['id']是一個數組

編輯

在看了一下之后,您需要使用的功能是array_map array_walk返回一個布爾值,而array_map返回一個數組,該數組看起來像您需要返回的數組,因為您正在$ids上使用implode

所以你需要

$ids = array_map('intval', $_POST['id']);

array_walk為每個數組調用一個函數,並將函數作為參數0。我認為您需要更改:

array_walk('intval', $_POST['id']); array('intval', $_POST['id']);

哪條線是36號線? 另外,您似乎在SQL語句中有一個額外的括號。 此外,$ _POST變量真的是數組嗎?

也許您已經更改了$ids = array_walk('intval', $_POST['id']);中參數的順序$ids = array_walk('intval', $_POST['id']); 我認為應該是$ids = array_walk($_POST['id'],'intval');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM