2017-03-01 117 views
0

我想要做的是得到我的$streamitem_imageuploaded值,所以我可以將它傳遞到我的$json陣列。這與嵌套循環有什麼關係嗎?當我發送我的json數據回來,我得到的是未定義變量$streamitem_imageuploaded與下面的代碼。調用變量從內部foreach循環放入陣列

if($checkphoto_id['photo_id']==0){ 
    $sqlhhh = "SELECT * FROM userphotos WHERE photo_name='".$checkphoto_id['photo_title']."' AND photo_ownerid='".$checkphoto_id['streamitem_creator']."' AND photo_datetime='".$checkphoto_id['streamitem_timestamp']."' ORDER BY photo_id ASC"; 
    $resulthhh = mysqli_query ($mysqli,$sqlhhh)or die(mysqli_error($mysqli)); 
    $photo_num=mysqli_num_rows($resulthhh); 
    $images = array(); 
    while ($rowhhh = mysqli_fetch_assoc($resulthhh)) { 
     $imageArray = array(
          'data' => $rowhhh['photo_imagedata'], 
          'photo_streamitem_id' => $rowhhh['photo_streamitem_id'], 
          'id' => $rowhhh['photo_id'] 
          ); 
     $images[] = $imageArray; 
    } 
    foreach ($images as $image) { 
     if($photo_num==1){ 
      $streamitem_imageuploaded='<a href="photo.php?pid='.$image['id'].'&streamitem_id='.$image['photo_streamitem_id'].'"><img class="stream_images" style="width:200px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($image['data']) .'" /></a>'; 
     }else{ 
      $streamitem_imageuploaded[]='<a href="photo.php?pid='.$image['id'].'&streamitem_id='.$image['photo_streamitem_id'].'"><img class="stream_images" style="width:100px;height:100px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($image['data']) .'" /></a>'; 
     } 
    } 
} 

商店我的$ JSON數組內的輸出值

$json = array(
    'posts' => array(), 
    'count' => $rowcount, 
    'commentlinktoggle' => $sendcommentlinktoggle, 
    'streamitem_formholder' => $streamitem_formholder, 
    'stopcommentsbutton' => $stopcommentsbutton, 
    'streamitem_uploadimage_count' => $streamitem_uploadimage_count, 
    'streamitem_imageuploaded' => $streamitem_imageuploaded, 
); 

UPDATE

編輯改變,仍然得到同樣的結果

if($photo_num==0){ 
    $streamitem_imageuploaded=''; 
} 
if($photo_num==1){ 
    $streamitem_imageuploaded='<a href="photo.php?pid='.$image['id'].'&streamitem_id='.$image['photo_streamitem_id'].'"><img class="stream_images" style="width:200px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($image['data']) .'" /></a>'; 
} 
if($photo_num>1){ 
    $streamitem_imageuploaded[]='<a href="photo.php?pid='.$image['id'].'&streamitem_id='.$image['photo_streamitem_id'].'"><img class="stream_images" style="width:100px;height:100px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($image['data']) .'" /></a>'; 
} 

此代碼工作在標準PHP頁面沒有問題。只是在嘗試從數組內調用變量時不行。

+0

'$ streamitem_imageuploaded'應該是一個數組還是字符串?你在'foreach'中使用它。 – Barmar

+1

如果'$ images'爲空,那麼'$ streamitem_imageuploaded'永遠不會被設置。此外,錯誤引用是什麼行以及該代碼中的行是什麼? –

+0

我得到了var $ streamitem_imageuploaded的值。如上所述,你使用var不一致。在一個塊中作爲字符串,在另一個作爲數組。無論如何,如果腳本的其餘部分將值返回,兩者都應該有效。 我建議檢查: 1. $ checkphoto_id ['photo_id'] == 0(真的是0) 2. $ photo_num 3.檢查$ images的內容。 通過while循環離開並保存圖像數組並設置$ photo_num = 1來測試執行的其餘部分: – mush

回答

0

這應該工作。增加了一些靜態值來模擬事物。這工作正常,沒有爲您的$ streamitem_imageuploaded var生成未定義。所以問題一定是你的mysql代碼或其他條件。

$rowhhh =1; 
$photo_num = 1; 
$images = array(); 
    if ($rowhhh == 1) { 
    $imageArray = array(
         'data' => $rowhhh['photo_imagedata'], 
         'photo_streamitem_id' => $rowhhh['photo_streamitem_id'], 
         'id' => $rowhhh['photo_id'] 
         ); 
    $images[] = $imageArray; 
} 
foreach ($images as $image) { 
    if($photo_num==1){ 
     $streamitem_imageuploaded='<a href="photo.php?pid='.$image['id'].'&streamitem_id='.$image['photo_streamitem_id'].'"><img class="stream_images" style="width:200px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($image['data']) .'" /></a>'; 
    }else{ 
     $streamitem_imageuploaded[]='<a href="photo.php?pid='.$image['id'].'&streamitem_id='.$image['photo_streamitem_id'].'"><img class="stream_images" style="width:100px;height:100px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($image['data']) .'" /></a>'; 
    } 
} 
$json = array(
'posts' => array(), 
'count' => $rowcount, 
'commentlinktoggle' => $sendcommentlinktoggle, 
'streamitem_formholder' => $streamitem_formholder, 
'stopcommentsbutton' => $stopcommentsbutton, 
'streamitem_uploadimage_count' => $streamitem_uploadimage_count, 
'streamitem_imageuploaded' => $streamitem_imageuploaded, 
); 
print_r($json); 
+0

當我刪除if($ checkphoto_id ['photo_id'] == 0){從我原來的代碼,並添加你的它作品。 – Gateway

+0

所以問題是與條件...可能是一個想法,以檢查爲什麼你的$ checkphoto_id ['photo_id'] == 0不計算爲真。如果您從答案中獲益,請儘可能接受它。 – mush