結果:MySQLを取得することは、私は、このテーブルを持っているシリアル化されたデータに
| id | related_id |
| 1 | 100 |
| 1 | 200 |
| 1 | 300 |
| 2 | 400 |
| 2 | 500 |
| 2 | 600 |
として、私はシリアル化されたデータを取得する必要があります。私が取得しようとしている
a:3:{i:1;s:3:"100";i:2;s:3:"200";i:3;s:3:"300";}
クエリ
SELECT id, related_id from mytable where id = 1;
これを使って 'while'
$result = $link->query($query);
$item = array();
while($f = $result->fetch_assoc()){
$id = $f['id'];
if ($id == $f['id']){
$item[] = $f['related_id'];
}
print serialize($item);
break; // for test
}
(アーウィンが提供する - ありがとう!)私の作品SOLUTION何をしようとする
$item = array();
while($f = $result->fetch_assoc()) {
$id = $f['id'];
if (!array_key_exists($id, $item)) {
$item[$id] = [1 => $f['related_id']];
} else {
$item[$id][] = $f['related_id'];
}
}
foreach ($item as $value) {
print serialize($value) . PHP_EOL;
}
あなたが結果として得ようとしているロジックは何ですか? –
あなたの試行はどうなりますか?どこが間違っていますか? Btw、期待される出力は2つの配列で、1つではありません。 –
これはたぶんtypoです: 'if($ id = $ f ['id'])'。 '='は変数を設定し、 '=='は緩やかな比較を行い、 '==='は厳密な比較を行います(データ型は一致しなければなりません)。しかし、if文は変数を上に設定しているので役に立たない。基本的には、「$ idをxに設定する」と次の行に「$ idがxであるかどうかを確認する」と言っています。明らかにxに設定しているのでxになります。 –