2013-10-03 2 views
-2

Мой массив печати не работает. он выделяет $ articleID перед добавлением массива, поэтому переменная не является нулевой или ничего.PHP массив не распечатывается

Тогда i print_r ($ magIDArray), и это просто эхо вне 'Массив()'; Может ли кто-нибудь помочь?

EDIT: я назвал функцию в противном случае она не будет эхом переменных в функции - это wouldent эха $ ArticleID, но он сделал

$sql = mysql_query("SELECT * FROM master_k2_categories WHERE parent = '$catid' ORDER 
BY id DESC"); 
while($row = mysql_fetch_array($sql)){ 
    $id = $row["id"]; 
    $name = $row["name"]; 
    getMagArticleID($id); 
} 

$magIDArray = array(); 
function getMagArticleID($id){ 
    $magID = $id; 
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
    while($row = mysql_fetch_array($sqlID)){ 
     $articleID = $row["id"]; 
     echo '<br>', $articleID; 
     $magIDArray[] = $articleID; 
    } 
} 
print_r($magIDArray); 
+0

Поместите '$ magIDArray = array();' перед строкой '$ sql = ...', а затем следуйте [отменить ответ] (http://stackoverflow.com/a/19156964/1400370) –

ответ

1

Вы пропустили две вещи:

1) Забыл для вызова функции.

2) Забыл вернуть значение функции.

Обновленный код:

<?php  
function getMagArticleID($id){ 
$magIDArray = array(); 
    $magID = $id; 
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
    while($row = mysql_fetch_array($sqlID)){ 
     $articleID = $row["id"]; 
     echo '<br>', $articleID; 
     $magIDArray[] = $articleID; 
    } 
     return $magIDArray; 
} 

$magIDArray = getMagArticleID($id); 
print_r($magIDArray); 
+0

@DrDebug. Пожалуйста, дайте мне знать, если это сработает для вас. – Pupil

+0

Я назвал его по-другому.посмотри на мое редактирование –

+0

Спасибо, у меня нет минус два очка, потому что люди не читали бит, где я сказал, что я назвал функцию –

1

Вы должны использовать ключевое слово global:

$magIDArray = array(); 
    function getMagArticleID($id){ 
    global $magIDArray ; 
    $magID = $id; 
     $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
     while($row = mysql_fetch_array($sqlID)){ 
      $articleID = $row["id"]; 
      echo '<br>', $articleID; 
      $magIDArray[] = $articleID; 
     } 
    } 
    getMagArticleID($id); 
    print_r($magIDArray); 

взглянуть на переменную сферы: http://php.net/manual/en/language.variables.scope.php

+0

Все еще dident work –

+1

Вам нужно сначала запустить функцию! – undone

1

Вам нужно запустить functi на, прежде чем пытаться и эхо значения

Edit: а undone said - вы также должны использовать глобальную переменную или возвращать значение в функции

+0

Я сначала вызвал функцию, иначе она не вывела бы всех чисел –

+0

Какие цифры? укажите строку, в которой вы вызываете функцию в своем вопросе. –

0

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

$magIDArray = array(); 
function getMagArticleID($id){ 
    $magID = $id; 
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
    while($row = mysql_fetch_array($sqlID)){ 
     $articleID = $row["id"]; 
     echo '<br>', $articleID; 
     $magIDArray[] = $articleID; 
    } 

    return $magIDArray; 

} 
$magIDfunction = getMagArticleID($id); 
print_r($magIDfunction); 

(непроверенные)

+0

. Вы должны использовать ключевое слово или вернуть что-то! – undone

0

попробовать это:

$magIDArray = array(); 
function getMagArticleID($id){ 
    global $magIDArray; 
    $magID = $id; 
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
    while($row = mysql_fetch_array($sqlID)){ 
     $articleID = $row["id"]; 
     echo '<br>', $articleID; 
     $magIDArray[] = $articleID; 
    } 
    return $magIDArray; 
} 
getMagArticleID(*parameter*); 
print_r($magIDArray); 
0

ваш массив получает «заполненный» внутри t его объем функции, поэтому его значение недоступно в глобальной области.

Вы можете глобализовать УАК:

function getMagArticleID($id){ 
    global $magIDArray; 
    $magID = $id; 
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
    while($row = mysql_fetch_array($sqlID)){ 
     $articleID = $row["id"]; 
     echo '<br>', $articleID; 
     $magIDArray[] = $articleID; 
    } 
} 

или вы можете вернуть массив в качестве результата функции

function getMagArticleID($id){ 
    $magIDArray=Array(); 
    $magID = $id; 
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC"); 
    while($row = mysql_fetch_array($sqlID)){ 
     $articleID = $row["id"]; 
     echo '<br>', $articleID; 
     $magIDArray[] = $articleID; 
    } 
    return $magIDArray; 
} 
$magIDArray=getMagArticleID($id); 

, который, среди других альтернатив, таких как передача массива по ссылке или обертывая все это внутри класса, в котором $ madIDArray является частным классом var или объявляет $ madIDArray как объект и имеет PDO для получения результата, связанного с объектом. Но я считаю, что вы решили использовать самое простое решение.

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