无法在PHP中打印数组

无法在PHP中打印数组,php,arrays,Php,Arrays,我在使用这段PHP代码时遇到了一些问题。我不知道它为什么要打印Array8次。据我所见,它应该打印数组的内容 目标是使用全局声明一个数组,定义该数组,将其分配给另一个数组并显示整个数组 $car_array = array( ); $array = array( ); create_array_cars (); displayProduct ($array); function create_array_cars ( ) { global $car_array;

我在使用这段PHP代码时遇到了一些问题。我不知道它为什么要打印
Array
8次。据我所见,它应该打印数组的内容

目标是使用
全局
声明一个数组,定义该数组,将其分配给另一个数组并显示整个数组

$car_array = array( );
$array = array( );

create_array_cars ();
displayProduct ($array);    

function  create_array_cars (  )  {
    global $car_array;
    $car_array = array( );
    $car_array[] = "ID: 12345" ;
    $car_array[] = "ID: 45678" ;
    $car_array[] = "ID: 67890" ;
    $car_array[] = "ID: 89123" ;
    return $car_array;
    }

function displayProduct ($array) {
    global $array;
    for ($i=0;$i<4;$i++) {
        print "$array<br>"; }
    }

$array = create_array_cars();
print (displayProduct($array));
$car_array=array();
$array=array();
创建_数组_cars();
显示产品($阵列);
函数create\u array\u cars(){
全球$car_阵列;
$car_array=array();
$car_array[]=“ID:12345”;
$car_数组[]=“ID:45678”;
$car_数组[]=“ID:67890”;
$car_数组[]=“ID:89123”;
返回$car_数组;
}
函数displayProduct($array){
全球$阵列;

对于($i=0;$i,当PHP将数组转换为字符串时,它只使用
array
。您想要使用或类似的东西。

将函数的返回值存储在变量中:

$array = create_array_cars();
displayProduct($array);
create\u array\u cars()
返回一个数组-您需要将其存储在一个变量中供以后使用。
displayProduct();
将数组作为其参数并显示其中的内容。此外,它不返回值-因此我们不需要存储返回值

在不需要时停止使用
global
s:

$array = create_array_cars();
displayProduct($array);
Globals通常被认为是一种糟糕的编码风格。你真的不想在这里使用它。你的函数甚至不需要处理外部数据。你只需要在函数内部创建一个数组,然后返回它。因此你的代码可以是:

function create_array_cars() {

    // Create the array
    $car_array = array(
        "ID: 12345",
        "ID: 45678",
        "ID: 67890",
        "ID: 89123"
    );

    // Return it
    return $car_array;
}
打印数组值,而不是试图显示整个数组:

$array = create_array_cars();
displayProduct($array);
打印任何数组都会打印
array
。您需要在数组中选择单个值-因为您使用的是基于数字索引的
for
循环,所以可以使用
$array[$i]
来执行此操作

另外,我已将
$I<4
更改为
$I
。这使您的代码更具动态性。即使数组中有4个以上的元素,它也可以工作(但在这种情况下不是这样,因为您在另一个函数中手动返回预定义数组)

修改后的函数如下所示:

function displayProduct($array) {
    for ($i = 0; $i < count($array); $i++) {
        print $array[$i] . "<br />";
    }
}
函数显示产品($array){
对于($i=0;$i”;
}
}
函数显示产品($array){
foreach($val形式的数组){
打印$val.“
”;} }
$car\u array=array();
$array=array();
创建_数组_cars();
显示产品($阵列);
函数create\u array\u cars(){
$car_array=array();
$car_array[]=“ID:12345”;
$car_数组[]=“ID:45678”;
$car_数组[]=“ID:67890”;
$car_数组[]=“ID:89123”;
返回$car_数组;
}
函数displayProduct($array){
//全球$阵列;
打印(数组);
回声“
”; } $array=创建_array_cars(); 显示产品($阵列);
不使用全局。并且打印“$array
”不正确…请删除此“”。
或者使用print_r($VAR)

如果使用“global$array”,则不需要displayProduct的参数$array。@CoertMetz:更新了答案:)我也在使用globals上下了功夫。作业要求使用globals,这就是为什么到处都是globals的原因:P@user3367565:使用
global
s不是一个很好的编码实践。有关更详细的解释,请参阅。该全局值用于什么?请删除它!