preg_filter-implode 函数产生额外的空数组值

preg_filter-implode function results in additional empty array value

我正在尝试从以下 json 中提取图像 URL - 让 $img_json =

[{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBw%2BU0V0Y5e1tvw7%2BmfoZu8UaDNSsGcj5j0sBpr5sFzCccdMJAtF4s%2F8kDl3l7cB%2Fmg6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwNSJDgIu25iaZFDdDOJGvqPHPuQLDTNDcqsaQPmMVW0RRaU9J%2FZuIdrEgh%2FX8Lgcr6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwg1cMGFDnzjB9VGn8rucwG%2Fs8Snz%2BcSYyPaEAAfuwOikyZXPowLE6pZGHf%2FfvE4Hi6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwKGGA7PJ5ECXgJeuxqzZBuF%2BOd2h%2FsLUgxaKeof%2BN8rl6Y03aBgKZNSzeKHO6FcK26Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwMcRNYUwBVM2vikrtBskkx4DcVDc%2BovLdZmEhvdbv8FLux%2FeubdmTbYiAqC5QnV9v6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwUKSjnM%2F5nWK7mCv2Z6pVopKCHhtzQeUci%2FAmjauDBn7H%2B6rL7rmQCWU1G6qrWlNw6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwJiL2Snf2V3JXH4QaHPSMvCgPHPbC68zHS%2BBnOfLkYDn8f9jvUcYgmsYJEKqlIr%2FK6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwQybUaXaW0RsKk4MVropXFa2q28e8OYUSoyHMstGjpDLuqAN%2BudRWfSxlwgVRGvHo6Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwfa%2BpAsLmVxryvGCXz93nePEFwwnxdYO77XVy5fiXo%2Bf1B9l9C0CegZiiw4mofoa76Iwe5WT24hk%3D"},{"multi_images":"","multi_images-data-zoom-image":"/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwG41ol3y4AoDGIE1TCXznXSIWpbN9ANuIDtAmwZegq83opEW%2FN01wBJ86IW0CIYWI6Iwe5WT24hk%3D"}]

从这些我会生成一个数组。

从生成的数组中,我会在所有数组值的前面加上一个前缀,前缀是“https://www.dickerdata.com.au”。

因此我设计了以下功能:

function my_get_images_dd( $img_json ) {
   $img_array = json_decode( $img_json, 1 );
     $all_imgs = array();
      for ( $i = 0; $i <= count( $img_array ); $i++ ) {
              $all_imgs[] = $img_array[ $i ]['multi_images-data-zoom-image'];
   }
    /*Prepend URL domain*/
    /*  */
    $prefixed_array = preg_filter('/^/', 'https://www.dickerdata.com.au', $all_imgs);
   return implode( ",", $prefixed_array );
}

除了结果输出在数组的末尾有一个多余的前缀实例。它似乎是前缀空白:

https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBw%2BU0V0Y5e1tvw7%2BmfoZu8UaDNSsGcj5j0sBpr5sFzCccdMJAtF4s%2F8kDl3l7cB%2Fmg6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwNSJDgIu25iaZFDdDOJGvqPHPuQLDTNDcqsaQPmMVW0RRaU9J%2FZuIdrEgh%2FX8Lgcr6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwg1cMGFDnzjB9VGn8rucwG%2Fs8Snz%2BcSYyPaEAAfuwOikyZXPowLE6pZGHf%2FfvE4Hi6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwKGGA7PJ5ECXgJeuxqzZBuF%2BOd2h%2FsLUgxaKeof%2BN8rl6Y03aBgKZNSzeKHO6FcK26Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwMcRNYUwBVM2vikrtBskkx4DcVDc%2BovLdZmEhvdbv8FLux%2FeubdmTbYiAqC5QnV9v6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwUKSjnM%2F5nWK7mCv2Z6pVopKCHhtzQeUci%2FAmjauDBn7H%2B6rL7rmQCWU1G6qrWlNw6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwJiL2Snf2V3JXH4QaHPSMvCgPHPbC68zHS%2BBnOfLkYDn8f9jvUcYgmsYJEKqlIr%2FK6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwQybUaXaW0RsKk4MVropXFa2q28e8OYUSoyHMstGjpDLuqAN%2BudRWfSxlwgVRGvHo6Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwfa%2BpAsLmVxryvGCXz93nePEFwwnxdYO77XVy5fiXo%2Bf1B9l9C0CegZiiw4mofoa76Iwe5WT24hk%3D,https://www.dickerdata.com.au/Download/GetImage?encryptedURL=rA8HfbBpHU%2FJmnYa9AR4eIXySIKvdCBwG41ol3y4AoDGIE1TCXznXSIWpbN9ANuIDtAmwZegq83opEW%2FN01wBJ86IW0CIYWI6Iwe5WT24hk%3D,https://www.dickerdata.com.au

好像数组最后多了一个空值?为什么会这样?

编辑:

另外,我用 array_walk 代替,结果相同

function my_get_images_dd( $img_json ) {
   $img_array = json_decode( $img_json, 1 );
     $all_imgs = array();
      for ( $i = 0; $i <= count( $img_array ); $i++ ) {
              $all_imgs[] = $img_array[ $i ]['multi_images-data-zoom-image'];
   }
    /*Prepend URL domain*/
    /*  */
    array_walk($all_imgs, function(&$item) { $item = 'https://www.dickerdata.com.au'.$item; });
   return implode( ",", $all_imgs );
}

您可以在 for 循环中添加字符串前缀:

$all_imgs[] = 'https://www.dickerdata.com.au'.$img_array[ $i ]['multi_images-data-zoom-image'];

您需要将 for 循环更改为 $i < count( $img_array ) (not <=)

for ( $i = 0; $i < count( $img_array ); $i++ ) {
              $all_imgs[] = $img_array[ $i ]['multi_images-data-zoom-image'];
   }

编辑: 空值的原因正是 for loop <= (当 $i 与 count 的值相同时它运行循环,但是 array 从零开始,所以它在 count($array) 处没有键 ( count 将为 100,array ist 从 0 到 99)