mysqli_fetch_array Дает мне повторяющиеся строки

У меня есть эта команда SQL:

SELECT Username FROM Family WHERE Parent = '$Username' LIMIT 10 

Когда я запускаю эту команду на моем PHPMyAdmin и помещаю в нее несколько $ Username, у меня есть это в результате:

 +----------+ | Username | +----------+ | johndoe | +----------+ 

но когда я пытаюсь создать такую ​​функцию:

 function userParent($Username) { global $con; $Result = mysqli_query($con, "SELECT Username FROM Family WHERE Parent = '$Username' LIMIT 10"); $Result = mysqli_fetch_array($Result); return $Result; } 

У меня есть этот массив в ответ:

 Array ( [0] => johndoe [Username] => johndoe ) 

Поэтому, когда я называю эту функцию на моем скрипте, используя цикл foreach, как это:

 $Parent = userParent('james'); foreach ($Parent as $value){ echo $value . '<br>'; } 

У меня всегда есть дубликат «johndoe» взамен. Я считаю, что это повторяющиеся строки, вызванные mysqli_fetch_array. Как решить эту повторяющуюся строку из mysqli_fetch_array?

благодаря

mysqli_fetch_array() возвращает как ассоциативный, так и числовой массив ваших результатов MySQL. mysqli_fetch_assoc() этого используйте mysqli_fetch_assoc() .

Это не обман, это описано в http://php.net/mysqli_fetch_array . По умолчанию функция возвращает массив с двумя ключами (числовая + строка). если вы хотите только один тип, используйте конкретную

 mysqli_fetch_row() [numeric only] mysqli_fetch_assoc() [keyed only] or mysqli_fetch_array($result, $fetch_mode); 

См. mysqli_fetch_assoc . Эта функция исключает часть с индексированной численностью.

Проверьте документы: http://php.net/manual/en/mysqli-result.fetch-array.php. Он возвращает то, что он должен.

По умолчанию он использует MYSQLI_BOTH , поэтому массив имеет как * числовые, так и ассоциативные ключи. Передайте MYSQLI_ASSOC или MYSQLI_NUM в качестве второго параметра для mysqli_fetch_array чтобы получить только один тип индекса.

 $Result = mysqli_fetch_array($Result, MYSQLI_NUM);