将关联数组中的单个键编码为 base64
Encoding a single key in associative array to base64
我正在尝试从 SQL table 中检索用户数据,其中一列是 blob_medium。我 运行 SQL 正确查询并在 php 脚本中获取数据。
if(mysqli_num_rows($result)){
while($row=mysqli_fetch_assoc($result)){
$result_array['user_data'][]=$row;
}
}
现在,对于 json_encode 这个数据,我需要将 user_pic 列的数据编码为 base 64。为此,我正在尝试这个。但是,似乎我做错了什么。任何形式的帮助将不胜感激。
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/>');
}
}
当我取消注释 print_r 语句时,我的数据以 base64 格式打印,但 assoc 数组的数据没有改变。
那是因为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']);
}
那是因为您正在更改 $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;
}
我正在尝试从 SQL table 中检索用户数据,其中一列是 blob_medium。我 运行 SQL 正确查询并在 php 脚本中获取数据。
if(mysqli_num_rows($result)){
while($row=mysqli_fetch_assoc($result)){
$result_array['user_data'][]=$row;
}
}
现在,对于 json_encode 这个数据,我需要将 user_pic 列的数据编码为 base 64。为此,我正在尝试这个。但是,似乎我做错了什么。任何形式的帮助将不胜感激。
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/>');
}
}
当我取消注释 print_r 语句时,我的数据以 base64 格式打印,但 assoc 数组的数据没有改变。
那是因为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']);
}
那是因为您正在更改 $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;
}