我有一个多维数组,我想json_encode
,但在此之前,我需要base64_encode
对应于产品图像的数组。
例如
var_dump($products_results) // outputs
array(18) {
[0]=>
array(70) {
["product_id"]=> string(4) "9087"
["make"]=> string(6) "shinox"
["color"]=> string(3) "red"
["country"]=> string(3) "usa"
["image"]=> string(6201) "����ExifII*��Ducky��Adobed����....."
["image_front"]=> string(5201) "��������....."
["image_back"]=> string(5201) "��������....."
.....
[1]=>
array(70) {
["product_id"]=> string(4) "8999"
["make"]=> string(6) "shinox"
["color"]=> string(3) "black"
["image"]=> string(6201) "����ExifII*��Ducky��Adobed����....."
["image_front"]=> string(5201) "��������....."
["image_back"]=> string(5201) "��������....."
等等。。。。
在这里,每个数组代表我的sql数据库中的一个产品,其中图像存储为二进制数据,而不是URL路径,以便允许一些离线功能。。。这是我第一次尝试存储图像,当我在这个论坛上读到许多帖子时,我为图像创建了VARBINARY
列,现在我需要base64_encode
这些图像,然后将其作为对象发送到客户端。
我的问题是如何通过每个产品数组循环到base64_encode
,这三个数组的关键字是与图像相关的image
、image_front
和image_back
。
$JSON_array = array();
$JSON_array["Products"] = $products_results;
//包含上面的18个阵列,图像编码为
$JSON_array["specifications"] = $specs_results
//发送一些其他东西,无需更改
print json_encode($JSON_array);
诀窍是跟踪数组索引值,以便更新原始值。
foreach ($JSON_array['Products'] as $productIndex => $product)
{
$JSON_array['Products'][$productIndex]['image'] = base64_encode($product['image']);
$JSON_array['Products'][$productIndex]['image_front'] = base64_encode($product['image_front']);
$JSON_array['Products'][$productIndex]['image_back'] = base64_encode($product['image_back']);
}
这将使用base64_encode
值更新循环外的原始数组。那么您应该能够轻松地json_encode()
该数组。
$output = json_encode($JSON_array);