2011-08-04 177 views
0

我试图合并两个阵列与array_merge(),但我收到以下警告:PHP合并两个阵列

警告:array_merge()[function.array合并]:参数#1不是上线41

这里阵列是代码:

$travel = array("Automobile", "Jet", "Ferry", "Subway"); 

echo "<ul>"; 

foreach ($travel as $t) 
{ 
    echo "<li>$t</li>"; 
} 

echo "</ul>"; 
?> 

<h4>Add more options (comma separated)</h4> 
<form method="post" action="index2.php"> 
<input type="text" name="added" /> 
<?php 
foreach ($travel as $t){ 
    echo "<input type=\"text\" name=\"travel[]\" value=\"$t\" />\n"; 
} 
?> 
<input type="submit" name="submit" value="Add" /> 
</form> 
<?php 
$travel = $_POST["travel"]; 
    $added = explode(",", $_POST["added"]); 

$travel = array_merge($travel, $added); 

print_r ($travel); 


?> 

回答

3

你分配$_POST["travel"],这是不是一个数组而是一个字符串,以$travel。首先将它变成一个数组。

+1

hm ..实际上'$ _POST [“travel”]'是一个数组,如果你使用'name ='travel []“'' – Floern

0

$_POST是一个数组,$_POST['travel']然而,它只是一个元素,除非它来源于多重选择元素。

1

您正在访问$_POST["travel"],但如果您未提交表单,则未定义。你需要检查它是否是一个post请求:

<?php 
if(isset($_POST["travel"])){ 
    $travel = $_POST["travel"]; 
    $added = explode(",", $_POST["added"]); 

    $travel = array_merge($travel, $added); 
} 

print_r ($travel); 
?>