PHP - 数组循环和base64_encode图像

时间:2014-05-01 20:46:39

标签: php loops multidimensional-array base64

我有一个多维数组,我想json_encode但在此之前,我需要base64_encode与产品图像对应的数组。

e.g

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) "��������....."

... ECT

这里每个数组代表我的sql数据库中的产品,其中图像存储为二进制数据而不是URL路径,以便允许一些离线功能......这是我第一次尝试存储图像时,我创建了{{ 1}}我在这个论坛的很多帖子上阅读的图像列,现在我需要VARBINARY这些图像,然后再将客户端作为对象发送。

我的问题是如何将每个产品数组循环到base64_encode三个数组,其关键字为base64_encodeimageimage_front与图像相关。

image_back

$JSON_array = array(); //包含上面的18个数组,其中包含图像编码

$JSON_array["Products"] = $products_results; //其他一些不需要更改的内容

$JSON_array["specifications"] = $specs_results

1 个答案:

答案 0 :(得分:0)

技巧是跟踪数组索引值,以便您可以更新原始数据。

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);