2015-07-21 5 views
0

КОД
Foreach LoopФикса незаконной строка смещения PHP

foreach ($LS::getBase() as $base) { 
      $fromDatabaseThumb = $base['base-thumbnail']; 
      $fromDatabaseDescription = $base['base-description']; 
      $fromDatabaseTitle = $base['base-title']; 
     echo " 
     <div style='background-color: #ffffff; width: 725px; height: 280px; display: inline-block; position: relative;''> 
     <div style='display: inline-block; max-width: 450px; max-height: 260px; margin: 12px; float: left;' class='baseThumb'> 
      <img src='$fromDatabaseThumb' style='max-width: 450px; max-height: 260px'> 
     </div> 
     <div class='baseInfo' style='display: inline-block; width: 250px; height: 253px; margin-top: 12px;'> 
      <h3 style='margin: 0; font-family: helvetica; max-width: 250px; max-height: 22px; overflow: hidden;'>$fromDatabaseTitle</h3> 
      <p style='margin-top: 8px; word-wrap: break-word;'> 
       <strong>Description:</strong><br> 
       " . $fromDatabaseDescription . " 
      </p> 
     </div> 
     </div> 
     "; 
     } 

getBase() функция

public static function getBase($what = '*') { 
self::construct(); 
if(is_array($what)){ 
    $columns = implode("`,`", $what); 
    $columns = "`{$columns}`"; 
}else{ 
    $columns = $what != "*" ? "`$what`" : "*"; 
} 

$sql = self::$dbh->prepare("SELECT {$columns} FROM baselayouts"); 
$sql->execute(); 
$data = $sql->fetch(\PDO::FETCH_ASSOC); 
if(!is_array($what)){ 
    $data = $what == "*" ? $data : $data[$what]; 
} 
return $data; 
} 


ошибка: enter image description here


ЧТО Я СДЕЛАЛ

Я проводил исследования и не смогли найти ничего, что работало. Поэтому я немного потрудился над своим кодом и до сих пор не смог его исправить.


ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Я сделал var_dump(), так как я видел в других должностях, сталкивается с той же проблемой, как я сделал var_dump(), поэтому я думал, что я хотел бы сделать это просто в случае, если это поможет вам, ребята, в любом случае.

var_dump()

array(4) { 
    ["id"]=> string(1) "1" 
    ["base-title"]=> string(14) "Base Layout #1" 
    ["base-thumbnail"]=> string(24) "/res/img/baseLayout1.png" 
    ["base-description"]=> string(73) "This is the base test description. Hopefully it does what it needs to do." 
} 
+0

какие строки ровно 16-18? ** РЕДАКТИРОВАТЬ ** вычислил это, можете ли вы сделать var_dump ($ LS :: getBase()); 'до вашего цикла foreach? –

+0

@ iam-decoder Да 16-18. ** EDIT ** Хорошо, позвольте мне сделать это прямо сейчас. – RepeaterCreeper

+0

@ iam-decoder Он дал мне тот же результат var_dump(), что и в прошлый раз. – RepeaterCreeper

ответ

2

Еогеасп цикл, как это не вызывается метод на каждой итерации. Он вызывается один раз в первом цикле, а затем каждая последующая итерация перебирает это возвращаемое значение. Поэтому вызов getBase возвращает одну строку из запроса, а затем вы перебираете каждый столбец из этого результата, делая $base внутри цикла значением в этом столбце, а не массивом строки. Var_dump представляется возвратом возврата от getBase, но не $base внутри цикла. Если вы сделали var_dump($base); в цикле, вы увидите каждую строку один раз. Чтобы исправить это, вы, вероятно, захотите изменить свой getBase на вызов , который вернет 2-мерный массив, например $result[rowNum][colName].

Edit: Кроме того, переключение петли на другую структуру, как while цикл, который будет оценивать полный текст заявления на каждой итерации будет поставить вас в бесконечный цикл, как каждый раз, когда вы звоните getBase вы повторный запрос, возвращает первую строку и повторить.

+1

Это правильный ответ. –

+1

@repeatercreeper Сообщите мне, если это недостаточно ясно для вас или чего-то еще. Я немного устал прямо сейчас, поэтому я, возможно, начал немного болтать. –

+0

@ JonathanKuhn О, ладно! Теперь я понимаю немного больше. Спасибо вам большое за ваше время. :) – RepeaterCreeper

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