填充Feed,即使PHP中没有图像

时间:2019-03-01 15:45:52

标签: php

我需要在电子商务Feed中填充多余的图片 这是标题:

|image_1|image_2|image_3|

我有一张桌子,我可以存放或不存放一张产品的多余图像。

所以我请求查看是否有一些额外的图像,SQL限制为3,因为我的供稿中最多只需要3张图像。

我需要的是,如果没有图像并且我不知道这样做的逻辑,则用空管道填充Feed。

例如,如果我有2张额外的图片,输出将是这样的:

|url/image_1.jpg|url/image_2.jpg||   <- empty pipe to match the header of 3

或仅一张图像:

|url/image_1.jpg|||

到目前为止我的代码:

$products_extra_images_query = tep_db_query(
    "SELECT products_extra_image, products_extra_images_id 
    FROM " . TABLE_PRODUCTS_EXTRA_IMAGES . 
    " WHERE products_id='" . (int)$row->id . "' LIMIT 3"); 

if (tep_db_num_rows($products_extra_images_query) >= 1){ 
    // there are some extra_images
    while ($extra_images = tep_db_fetch_array($products_extra_images_query)) {  
        $output .=  $extra_images['products_extra_image']."|" ; 
    }
}

感谢您的帮助。 塞巴斯蒂安

2 个答案:

答案 0 :(得分:2)

创建一个由4组成的数组,然后将图像路径放入其中,然后将其内嵌到由“ |”分隔的字符串中。

$images = array_fill(0,4,null);
$idx = 0;
if (tep_db_num_rows($products_extra_images_query) >= 1) { 
    // there are some extra_images
    while ($extra_images = tep_db_fetch_array($products_extra_images_query)) {  
        $images[$idx] = $extra_images['products_extra_image'];
        $idx++; 
    }
}
$output .= implode($images, '|');

答案 1 :(得分:0)

如果我的理解正确,那么您可以尝试使用类似的方法〜,尽管使用诸如tep_db_fetch_array之类的非标准名称可能会使问题感到困惑?

$rows = tep_db_num_rows( $products_extra_images_query );
if ( $rows > 0 ){ 

    $output=[];

    /* add found records to the `output` array rather than a string - or, use `fetch_all` */
    while( $extra_images = tep_db_fetch_array($products_extra_images_query)) {  
        $output[]=$extra_images['products_extra_image']; 
    }

    /* an odd looking loop but should add extra `pipe` chars when there are not 3 results */
    for( $i=0; $i < ( 3 - $rows ); $i++ )$output[]='';
    echo '|' . implode('|',$output) . '|';

}