2014-12-02 111 views
0

我可能犯了一個非常愚蠢的錯誤,但我找不到它。php不返​​回數組

我想返回一個數組,它只是不工作。

$ temp_array的計數是33,它應該是正確的數字,$ dropdown_array的計數是1.我做錯了什麼?

<?php 
function dropmaker($stuff) { 

require '../connect.php'; 

$dropdown_query = "SELECT $stuff FROM maps_sku_groups GROUP BY $stuff;"; 
$dropdown_result = mysqli_query($link, $dropdown_query); 
while ($data = mysqli_fetch_array($dropdown_result)) { 
    $temp_array[] = $data[$stuff]; 
} 
echo count($temp_array); 
return array($temp_array); 
}?> 

<?php 
$dropdown_array[] = dropmaker('cyclecount'); 
echo count($dropdown_array); 
?> 
+0

我將不包括在功能的文件!或者至少使用:require_once – Rizier123 2014-12-02 16:28:45

+0

您是否嘗試使用var_dump($ arrayname)或print_r($ arrayname)來查看結果?另外,正如@ Rizier123所提到的,不要在函數中包含連接。在腳本的頂部需要一次,這可能會導致錯誤。 – alda1234 2014-12-02 16:29:06

+0

我似乎無法得到該功能,而沒有在其中的文件工作。這也對我沒有意義... – dehuman8 2014-12-02 16:31:55

回答

6

您正在返回一個數組,其中包含數組$temp_array作爲其唯一元素。直接返回$temp_array,它應該工作。

EDIT(感謝@ Rizier123):此外,要分配的呼叫來dropmaker()$dropdown_array[],這將插入函數調用到(先前不存在的)陣列$dropdown_array的結果的結果,所以$dropdown_array變得以函數結果作爲其唯一元素的數組。

+1

也他不必寫這個:'$ dropdown_array []'只有'$ dropdown_array' – Rizier123 2014-12-02 16:30:23

+0

e。 g一個簡單的'var_dump($ dropdown_array)'會顯示這個問題。 – 2014-12-02 16:30:37

1

試試這個

<?php 
    function dropmaker($stuff) { 

    require '../connect.php'; 

    $dropdown_query = "SELECT $stuff FROM maps_sku_groups GROUP BY $stuff;"; 
    $dropdown_result = mysqli_query($link, $dropdown_query); 
    while ($data = mysqli_fetch_array($dropdown_result)) { 
     $temp_array[] = $data[$stuff]; 
    } 
    echo count($temp_array); 
    return $temp_array; 
    }?> 

    <?php 
    $dropdown_array = dropmaker('cyclecount'); 
    echo count($dropdown_array); 
    ?> 

你的函數返回數組的數組,因爲你已經寫return array($temp_array);

,你也正在分配此返回值數組$ dropdown_array的第一指標所以這個變量保持的計數1

+0

這樣做仍然是33 1 當的var_dump給出了這樣的:(比我的先前迭代少一個級別。) 陣列(大小= 1) 0 => 陣列(大小= 33) – dehuman8 2014-12-02 16:40:23

+0

確定,我現在看到了,謝謝 – dehuman8 2014-12-02 16:44:15

+0

你有沒有試過這段代碼? – Nick 2014-12-02 16:44:46

1

問題是這一行$dropdown_array[] = dropmaker('cyclecount');您將dropmaker()(數組)的返回值分配給數組的第一個元素$dropdown_array[]比將$dropdown_array分配給陣列本身。

試試這個代碼

$dropdown_array = dropmaker('cyclecount');

卸下[]正在解決這個問題。

1

試試這個代碼:的

return array($temp_array)代替return $temp_array

$dropdown_array[]代替$dropdown_array