2016-05-01 15 views
2

カラムの1つがblob_mediumであるSQLテーブルからユーザデータを取得しようとしています。私は適切にSQLクエリを実行し、PHPスクリプトでデータを取得します。1つのキーを連想配列でbase64にエンコードする

if(mysqli_num_rows($result)){ 
    while($row=mysqli_fetch_assoc($result)){ 
     $result_array['user_data'][]=$row; 
    } 
} 

は今、このデータをjson_encodeし、私はこれをしようとしていますそのためにベース64にuser_pic列のデータをエンコードする必要があります。しかし、私は何か間違っているようです。どんな種類の助けにも感謝します。

foreach($result_array as $key){ 
     foreach($key as $key2){ 
      //print_r(base64_encode($key2['user_pic']).'<br/>'.'<br/>'); 
      $key2['user_pic'] = base64_encode($key['user_pic']); 
      //print_r(($key['user_pic']).'<br/>'.'<br/>'); 
     } 
} 

私は私のデータをBase64形式で印刷されますprint_rステートメントのコメントを外しますが連想配列のデータが変更されていません。

答えて

0

だこと配列$key2を変更します。 foreachループによって作成された一時的な値です。私は、私はそれを防ぐことができればループ内でループを使用しないように言われたので、私自身は、この特定の状況でforループを使用することをお勧めします、そして、それは読むために非常に簡単なものになります:

for($i=0; $i < count($result_array['user_data']); $i++){ 
$encodedUserPic = base64_encode($result_array['user_data'][$i]['user_pic']); 
$result_array['user_data'][$i]['user_pic'] = $encodedUserPic; 
} 
+1

私はまだforeachを使いますが、外側のループは使いません。 – Ray

+0

これは、おかげで働いた男(Y)。 –

1

これは、forループの$key$keysの配列がコピーされているためです。元に

foreach($result_array['user_data'] as &$key){ 
     $key['user_pic'] = base64_encode($key['user_pic']); 
    } 

または明示的な指標によって:あなたは彼らがオリジナルを変更したい場合は、どちらかの参照、コピーではなくなるためにそれらを指定することによって、それを行うことができ、あなたがしているので

foreach($result_array['user_data'] as $index => $key){ 
     $result_array['user_data'][$index] ['user_pic'] = base64_encode($key['user_pic']); 
} 
+0

は私が個人的に感じますループの中にループを入れる必要はありません。この特定の状況に対して、単一の 'for'ループを作成するほうがずっと簡単です。私よりも速く入力するための小道具) – NoobishPro

+0

@Babydeadの良い点は、元の結果配列の 'user_data'インデックスの明示的な使用に気付いた – Ray

+0

そして私は完全にあなたがそれを行うことによってforeachを保つことができることを逃した更新された)方法。これは私の答えを冗長にしますが、私はどんな場合でもそれを残します。私はあなたのためにあなたをアップアップして、私を追い越します: ') – NoobishPro

関連する問題