Message: implode(): Argument #2 ($array) must be of type ?array, string given

Halo teman-teman Sekolah Coding, saya mau menanyakan error diatas. Bagaimana agar bisa berhasil menggunakan implode pada sebuah multiselect yang datanya diambil dari data int(), apakah tetap bisa?

image.pngerror
$query_span = $this->span_centralregion->get();
        foreach($query_span->result() as $spn) {
            $span[$spn->span_id] = $spn->span_name;   
        } 
 
$data = array(
            'page' => 'add',
            'row' => $ticket,
            'span' => $span, 'selectedspan' => null,
        );

public function add($post) { 
 
    $params = [ 
 
    'span_id' => implode("<>", $post['span']), 
 
    ]; 
}

<div class="form-group">
    <label><strong>Span ID*</strong></label>
    <?php echo form_dropdown('span', $span, $selectedspan,
    ['class' => 'form-control', 'required' => 'required', 'id' => 'select2-demo-3', 'data-plugin' => 'select2', 'multiple' => 'multiple', 'data-options' => '{ maximumSelectionLength: 2 }']) ?>
</div> 

avatar vesaldiy

@vesaldiy

6 Kontribusi 0 Poin


Jawaban

// mungkin deklarasiin dulu $span sebagai array kosong, karena kemungkinan $query_span kosong
$span = [];
$query_span = $this->span_centralregion->get();
        foreach($query_span->result() as $spn) {
            $span[$spn->span_id] = $spn->span_name;   
        } 

$data = array(
            'page' => 'add',
            'row' => $ticket,
            'span' => $span ?? [], 
            'selectedspan' => null,
        );

// untuk jaga jaga
public function add($post) { 
    if(!is_array($post['span'])) return 'bukan array';
    $params = [ 
 
    'span_id' => implode("<>", $post['span']), 
 
    ]; 
}
avatar driyan

@driyan

193 Kontribusi 109 Poin


Terimakasih bang @driyan sudah mau meluangkan waktu buat balesin pertanyaan saya, baris kode'nya udah tak coba dan berhasil (untuk errror udh gak muncul lagi). Tapi saya masih bingung kenapa data yang masuk ke database masih berupa data tunggal ya, padahal udh pake multiselect & implode untuk pemisahnya. Apakah ini gara2 tipe tabel'nya INT bukan VARCHAR ya? 

image.pngimage.png
avatar vesaldiy

@vesaldiy

6 Kontribusi 0 Poin

  • Nilai dari argumen kedua dari implode itu harus berupa array. Misal: $array = ["satu","dua","tiga"]; echo implode(',', $array); Jadi, jika seandainya nilai dari $array itu bertipe selain array, maka akan menghasilkan error. Contoh: $array = 1; echo implode(',', $array); atau, $array = "string biasa"; echo implode(',', $array); Selengkapnya disini: https://www.php.net/manual/en/function.implode.php - @tompradana


Login untuk gabung berdiskusi