簡體   English   中英

php - 使用 foreach 向數組添加多個值

[英]php - Adding multiple values to an array using foreach

我正在使用 foreach 在表單提交上保存多個值到一個數組。 以下邏輯在 php 8 更新之前運行良好。

請讓我知道需要做什么才能使其再次工作。

$batch = $this->input->post('batch_id');
$activity_selected = $this->input->post('activity_selected');
$characteristics = array_values($this->input->post('characteristics'));
$user_id=$this->session->userdata('userid');
foreach($activity_selected as $key => $val) 
{
    $dataSet[] = array (
            'batch_id' => $batch_id,
            'activity_id' => $activity_selected[$key],
            'characteristics' => implode(',', $characteristics[$key]),
            'user_id' => $user_id,
    );  
}
$this->person->insertdata($dataSet,$batch);

收到此錯誤

錯誤 - 2222 Oct 2121 11:47:24 --> 嚴重性:編譯錯誤 --> 無法使用 [] 讀取 D:\\xampp\\htdocs*** 122

錯誤 - 2222 Oct 2121 11:47:32 --> 嚴重性:錯誤 --> 異常:implode(): 參數 #2 ($array) 必須是 ?array 類型,字符串給定 D:\\xampp\\htdocs*** 108 錯誤 - 2121 年 10 月 2222 日 11:47:32 --> 嚴重性:錯誤 --> 異常:內爆():參數 #2($array)必須是 ?array 類型,字符串給定 D:\\xampp\\htdocs** * 108

在 PHP 8 之前,以下代碼只會拋出警告並返回NULL

看這里。 https://3v4l.org/vuNBL

$characteristics['key'] = 'string';
$key = 'key';

var_dump(implode(',', $characteristics[$key]));

// Warning: implode(): Invalid arguments passed in /in/q6EPW on line 6
// NULL

自 PHP 8 起,警告現在升級為致命錯誤

Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given

有幾種方法可以解決這個問題,最簡單的方法是檢查該值是否為數組,如果不是則傳遞一個空數組。

implode(',', is_array($characteristics[$key]) ? $characteristics[$key] : []);

// string(0) ""

您可以對該代碼執行大量操作,您可以通過使用 foreach($items as $key => $value) 並使用 $key 而不是$i。

暫無
暫無

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

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