2016-05-12 3 views
0

Странная проблема. Я пытаюсь использовать medoo с sqlite-файлом, чтобы получить некоторые данные. Я получаю многомерный массив. Я проверил с print_r, что данные действительно в нем.Переменная в PHP, которая увеличивается сама собой?

Это print_r выход (короткая версия):

Array (
[0] => Array ([id] => 1 [name] => aaa) 
[1] => Array ([id] => 2 [name] => bbb) 
[2] => Array ([id] => 3 [name] => ccc) 
[3] => Array ([id] => 4 [name] => ddd) 
[4] => Array ([id] => 5 [name] => eee) ... 
) 

Это мой код:

$datas = $database->select("suppliers","*"); 
print_r ($datas); 
$length=count($datas); 
$i = 0; 
while ($i < $length) { 
    echo $i; 
    echo '<a href="edit_sup.php?sup='.$datas[$i]["id"].">".$datas[$i]["name"]."</a><br/>"; 
    echo $i; 
    $i++; 
    } 

Проблема в том, что не все данные получить печатные! При попытке распечатать var $i, я обнаружил, что до и после a href значение отличается! Например, выход что-то вроде этого:

0 bbb 
21 ddd 
43 fff 

Как вы можете видеть, в первой строке aaa должен быть напечатан - но bbb печатается вместо этого, и aaa не печатается на всех! (и т. д.)

Любая идея, почему это происходит? Благодарю.

+1

это невозможно для кода и данных, предоставленными вами. – zerkms

+0

Я не вижу, как ваш код пропускает элементы массива. Я даже попробовал это здесь, который, как представляется, печатает желаемый результат: https://3v4l.org/0feUa – Keiji

+2

@zerkms Это возможно ***, учитывая, что линия, эхо-ссылка на ссылку, была неверной. *** Он должен был do ** $ datas [$ i] ["id"]. '>>. ** но он, вероятно, пропустил его и сделал ** $ datas [$ i] ["id"]. ">". **. Другими словами, атрибут HREF имеет проблему ... * ** Если он проверяет исходный код, все значения будут там только искажены и, следовательно, не могут быть отображены. *** – Poiz

ответ

5

Вы можете попробовать другой вид LOOPING Построить так:

<?php 

    $datas = $database->select("suppliers","*"); 
    print_r ($datas); 

    foreach ($datas as $data) { 
     echo '<a href="edit_sup.php?sup='. $data["id"] .'">' . $data["name"] . "</a><br/>"; 
    } 

Хотя нет ничего принципиально плохого в использовании время цикла, Вы, казалось, перепутать свои одиночные и двойные кавычки так, даже в то время как цикл может еще работать, когда сделан правильно, так как:

while ($i < $length) { 
     echo $i; 
     // THE ISSUE WAS JUST WITH THE SWAPPING OF SINGLE QUOTES WITH DOUBLE QUOTES... 
     echo '<a href="edit_sup.php?sup=' . $datas[$i]["id"] . '">' . $datas[$i]["name"] . "</a><br/>"; 
     echo $i; 
     $i++; 
    } 

Надеется, что это помогает ...

+0

Отлично, спасибо! Эти мелочи, которые делают вас орехами и вы не понимаете, чего не хватает ... – HaReL

+0

BTW, в начале я использовал 'foreach', но когда это не помогло, iv'e попытался использовать' while', потому что я не знал, где проблема является... – HaReL

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