2014-09-16 1 views
0

Как закодировать и сохранить данные, исходя из количества изображений этого массива образцов?как правильно петляться в таком виде массива в PHP?

Цель:

  • сохранять изображения в таблице изображений на основе от того, сколько находится внутри образца массива
  • изображение с «0» (ноль) суффикс, основное изображение и он должен быть помечен как «основное изображение»

    $postdata = array 
        (
        'key' => 'adsfasdf34234234235235c', 
        'source' => 1, 
        'maincategoryid' => 12, 
        'subcategoryid' => 34, 
        'userid' => 6, 
        'shopid' => 1, 
        'status' => 1, 
        'description'=> 'blah blah blah', 
        'image0' => 'blahbalh\big.jpg', 
        'image1' => 'hblahblah\smal1.jpg', 
        'image2' => 'flowers.jpg', 
        'image3' => 'leaf.jpg' 
    ); 
    

вот мои поля таблицы таблица изображения

IMAGEID,USERID,SHOPID,IMAGEPATH,MAINIMAGE,STATUS 

ожидаемый ввод в таблице должен быть что-то вроде этого на основе из образца выше

IMAGEID,USERID,SHOPID,  IMAGEPATH   ,MAINIMAGE,STATUS 
    1  6  1  blahbalh\big.jpg   1  1  
    2  6  1  hblahblah\smal1.jpg  0  1 
    3  6  1  flowers.jpg    0  1 
    4  6  1  leaf.jpg     0  1 

, как вы можете увидеть первое изображение с нулевым суффиксом от ключа массива, является основным образом, имеет флаг в столбце

Я попытался с помощью цикла Еогеаспа или цикла, но я только был в состоянии сохранить 1 строку данных на основе из этого массива, когда я должен быть спасительными 4 строки данных

Я попробовал этот

$mainimage = 0; 
for($i=0; $i < count($postdata); $i++){ 
    if(!isset($postdata['image'.$i])){ 
      continue; 
     } 
     $shopmodel->USERID = $postdata['userid']; 
     $shopmodel->SHOPID = $postdata['shopid']; 
     $shopmodel->IMAGEPATH = $postdata['image'.$i]; 
     $shopmodel->MAINIMAGE = $mainimage; 
     $shopmodel->STATUS = $postdata['status']; 
     if($i == 0){ 
      $shopmodel->MAINIMAGE = 1; 
     } 
     $shopmodel->save(); 
} 

Я знаю, что есть что-то действительно неправильно, так как петля и достижение этой цели на основе из моих образцов?

+0

Это активная запись, не нужно беспокоиться об этом, главный вопрос заключается в том, как правильно петлиться в этом массиве, чтобы достичь моей главной цели? – sasori

+0

$ shopmodel-> save(), сохранит его в таблице изображений, я просто назвал его так, потому что это всего лишь образец.функция save(), привязанная к переменной taht, сохраняет все, что было инициализировано атрибутами – sasori

+0

, это опечатка в моем примере. Я удалил только письмо s – sasori

ответ

0

wheew, после нескольких часов проб и ошибок, я пришел с моим собственным решением, чтобы исправить эту проблему вот мое решение

$ismain = 0; 
$images = array(); 

     for($i=0; $i < count($postdata); $i++){ 
      if(!isset($postdata['image'.$i])){ 
       continue; 
      } 
      array_push($images, $postdata['image'.$i]); 
     } 

     foreach($images as $key => $image){ 
      if($key == 0){ 
       $ismain = 1; 
      } else { 
       $ismain = 0; 
      } 
      echo "adid = ". $postdata['shopid']. "; ismain =" .$ismain."; image =". $image."<br/>"; 

     } 

примечания к себе: в действительном (реаке l) код приложения, я создал экземпляр модели внутри цикла foreach и инициализировал соответствующие атрибуты .., а затем вызвал функцию save() модели ... и стрелу .. вывод, который я хочу, появился .. спасибо за все, кто пытался мне помочь ... но в конце концов ... Я сам помог себе. cheers

0

Вам нужно отладить, чтобы узнать, что пошло не так. Например. у

var_dump($postdata['image'.$i]); 

перед

$shopmodel->USERID = $postdata['userid'];` 

так что вы будете видеть, если ваши условия работает отлично.

Далее рассмотрим для сброса модели при использовании в цикле:

$model()->unsetAttributes(); 

и проверить, если это опечатка здесь или в коде $shopsmodel VS $shopmodel

+0

Я уже отредактировал мой образец, нет фактической опечатки в реальном коде – sasori

+0

@ Ярослав, это действительно должно было быть опубликовано как комментарий. На самом деле это не ответ. –

+0

Попробуйте добавить 'var_dump()', как я уже упоминал выше, для отладки и совместного использования вывода. – Yaroslav

Смежные вопросы