我无法与数组相交。POST,PHP,如何与POST数组相交?

我无法与数组相交。POST,PHP,如何与POST数组相交?,php,arrays,http-post,array-intersect,Php,Arrays,Http Post,Array Intersect,1) 我无法与阵列相交: 2) 我无法使用键获取关联POST数组的值 $adbcols=Array ( [tcid] => tcid .... array containing database column names $aformval=Array ( ['tcbcheck'] => on ['tcprice'] => 100 ['tctitf'] => 01 。。包含POST数据的数组 function amatchfnc($a, $b) { if (

1) 我无法与阵列相交: 2) 我无法使用键获取关联POST数组的值

$adbcols=Array ( [tcid] => tcid .... array containing database column names

$aformval=Array ( ['tcbcheck'] => on ['tcprice'] => 100 ['tctitf'] => 01 
。。包含POST数据的数组

function amatchfnc($a, $b) {
    if ($a==$b){  return 0; }
    return ($a>$b) ? 1:-1; 
    } // function amatchfnc($a, $b)

foreach ($_POST as $apie=>$aformval  ) {

       $aresf=array_intersect_ukey($aformval,$adbcols,"amatchfnc");
} }
更完整的代码:

foreach ($_POST as $apie=>$aformval  ) {
echo "<br><br> apie:"; print_r($apie);  
echo "<br><br> aformval:";  print_r($aformval);  //prints, also  aformval[tcbcheck]
echo "<br><br> aformval[tcbcheck]".$aformval['tcbcheck']; //gives empy line     

if(isset($_SESSION['vcurprcode'])) { $aformval['tcfkcode']=$_SESSION['vcurprcode'];} 
                               $aresf=array_intersect_ukey($aformval,$adbcols,"amatchfnc");

echo "<br><br><br> print_r(aresf)="; print_r($aresf);
                                            insertvalues($aresf,$adbcols, $conn, $vdbname, $tprice);
} //foreach ($_POST as $apie ) 
$aresf
应包含所有
$aformal
值。 我相交只是为了检查aref的列名是否与数据库的列名一致$我从数据库模式获取的adbcols

我发布的HTML文件包含以下段落:

<input type= "text" name="mon01['tcprice']"  value="<?php echo $mon01['tcprice']; ?>"  " > 

<input type="range" name="mon01[range]" min="0" max="1000" >

<input type="hidden" class="mon" name="mon01['tctitf']"  value="01"; " size="1" >

<input type="hidden" class="mon" name="mon01['tcdatefromto']"  
value="priceFrom20140101To20140131"; " size="1" >

<input type="hidden" class="mon" name="mon01['tcbset']"  value="3"; " size="1" >

<input type="hidden" class="mon" name="mon01['tcbsettit']"  value="month"; " >

<textarea  cols="50" rows="3" name="mon01['tcdesc']" 
value="<?php echo $mon01['tcdesc'];  ?>" > </textarea>
“>
通常情况下,数组相交是有效的。下面是一些数组的示例:

<?php
$af=array( "a"=>"a","c"=>"c", "e"=>"e" );
$ad=array( "a"=>"a","b"=>"b","c"=>"c","d"=>"d", "e"=>"e" );

$af=array_intersect_ukey($af,$ad,"amatchfnc");
    echo "<br> print_r(af)="; print_r($aresf);
?>

给出:print_r(aresf)=数组([a]=>a[c]=>c[e]=>e)


但是如果我尝试与POST数组$aformval相交,我会得到奇怪的结果。如何与POST数组相交?

我不完全确定您的要求,但我认为这正是您想要的。您可以尝试
array\u merge()
。将一个或多个数组的元素合并在一起,以便将其中一个数组的值追加到前一个数组的末尾。由于两个数组中的键相同,因此第二个数组的键=>值将位于结果数组中(在本例中为
$aformval

结果:

Array
(
    [tcid] => 1
    [tcbcheck] => on
    [tcprice] => 100
    [tctitf] => 0
)
如果需要检查
$adbcols
中是否存在所有
$aformaval键
,请重试

$arr =array_diff(array_keys($aformval),array_keys($adbcols));
如果
count($arr)>0
,则
$aformval
中的键在
$adbcols
中不存在。您可以通过打印($arr);

使用数组合并来查看差异


原因是我将
$aformval[“'key'”]
$dbcols[“key”]

或者我必须制作没有四分之一的html表单:

<input type= "text" name="mon01[tcprice]" value="<?php echo $mon01[tcprice]; ?>"   > 

我不需要附加值。我只想检查$a正规键是否对应于数据库列名。$adbcols包含作为键和值的数据库列名:)我从MySQL数据库架构获得它。交集不适用于POST数组。如果我手工编写数组,它就可以工作。可能有一些技巧如何处理POST?请阅读上面的答案。原因是我将$aformval[“'key'”]与$dbcols[“key”]相交。解决方案是更改html表单。
$arr =array_diff(array_keys($aformval),array_keys($adbcols));
$result = array_merge($array1, $array2);
<input type= "text" name="mon01[tcprice]" value="<?php echo $mon01[tcprice]; ?>"   > 
 <input type= "text" name="mon01['tcprice']" value="<?php echo $mon01['tcprice']; ?>"   >