iT邦幫忙

0

php陣列轉字串印出

先上程式碼

include "config.php";

$result = mysqli_query($con, "SELECT * FROM `updata_id` ");  

$array = array();
while($row = mysqli_fetch_assoc($result)){
    $array[] = $row;
}

foreach ($array as $key => $value) {
$arr2 = $value['id'];
$arr3 = $value['node_id'];

//print_r($arr2);
echo implode(";",$arr2);

如果print_r($arr2)會輸出所有id,但是全部黏在一起像這樣
123456789101112

echo implode(";",$arr2)則是沒有東西出來QQ

我是想把它變成
1;2;3;4;5;6;7;8;9;10;11;12

感謝

Victor iT邦新手 4 級 ‧ 2020-02-27 15:17:53 檢舉
是不是少一個大括號? 你應該把$arr2 = $value['id']; 改成 $arr2[] = $value['id']; 然後再迴圈外 print_r($arr2) 就可以出來陣列了

1 個回答

2
Victor
iT邦新手 4 級 ‧ 2020-02-27 15:20:05
最佳解答

改成這樣應該可以印出你想要的 1;2;3;4;5;6;7;8;9;10;11;12

include "config.php";

$result = mysqli_query($con, "SELECT * FROM `updata_id` ");  

$array = array();
$arr2 = [];
$arr3 = [];

while($row = mysqli_fetch_assoc($result)){
    $array[] = $row;
}

foreach ($array as $key => $value) {
    $arr2[] = $value['id'];
    $arr3[] = $value['node_id'];
}

echo implode(";",$arr2);
amisser iT邦新手 5 級 ‧ 2020-02-27 15:28:52 檢舉

真的可以了!!感謝
想請問為什麼一定要在迴圈外echo?
我從頭到尾都在迴圈內修修改改echo了一整天....

Victor iT邦新手 4 級 ‧ 2020-02-27 15:49:57 檢舉

$arr2 = $value['id'];
只是把 id 的值,不停的寫入 $arr2 這個變數。

迴圈過程

  1. 1 <-表示跑第一圈迴圈$arr2 的值是 1
  2. 2 <-第二圈
  3. 3
  4. 4
  5. 5
  6. 6
    ...

$arr2 不是陣列是一個數值,會輸出123456789101112是因為你在迴圈裡面 print_r($arr2) 每跑一次迴圈都印出 $arr2 的值

implode 這個方法要給它一個陣列

所以上面我宣告了 $arr2 = []; 接著在迴圈中把每次的值($value['id'])存入陣列

$arr2[] = $value['id'];

迴圈過程

  1. [1] <-表示跑第一圈迴圈$arr2 的狀態。型態是陣列有一個元素1
  2. [1, 2]
  3. [1, 2, 3]
  4. [1, 2, 3, 4]
  5. [1, 2, 3, 5]
  6. [1, 2, 3, 5, 6]
    ...

有了這個陣列以後,在迴圈外面再用 implode(";", $arr2)

這個方法就可以把陣列 轉換成字串,並且用 ; 分隔

amisser iT邦新手 5 級 ‧ 2020-02-28 14:54:01 檢舉

我終於看懂了....謝謝你的解說!

我要發表回答

立即登入回答