2012-07-25 119 views
0

第一对几行就是根据需要仔细检查所有变量。他们都提供了正确的数据。Array_search发生故障?

的print_r($堆栈)并得到如上所述的数组元素,(+和多种元素)

<?php 
$item_name = $_POST['item_name']; 
echo $item_name.'<br/><br/>'; // IBM-3246785 
print_r($stack); // Array ([0] => IBM-3246785 [1] => IBM-3567465 [2] => IBM-4579645 [3] => [4] => IBM-1234567 [5] => [6] => IBM-12345678 [7] => [8] => IBM-24374365)    

$key = array_search($item_name, $stack); 
if ($key !== false) { 
    echo "The key where find was found is:" . $key; 
} else{ 
    echo $item_name . " was NOT FOUND in the array"; 
}; 
?> 

阵列搜索返回false每次!!! 尝试用IBM-3246785替换$ item_name - 问题依然存在。 无法让它返回所选“item_name”的索引/键。

回答

0

您可以尝试$比较ITEM_NAME和$堆叠[0],像if ($item_name == $stack[0]) echo "Done"; 你可以尝试检查假第一,像if ($key === false) echo "Not"; else echo "Is"; ,也许你可以尝试不同的功能,用于检索正确的数组的键。

+0

试图ITEM_NAME比较栈[0]这给了错误。 修剪完数组和字符串后,它给了“完成”。 它仍然不能正确搜索 – 2012-07-25 06:32:30

+0

它得到解决。修整数组和字符串后 - 它的工作! – 2012-07-25 06:39:28

2

我只是跑这个代码就在这里---

<?php 

$item_name = "IBM-3246785"; 
$stack = Array (0 => 'IBM-3246785', 1 => 'IBM-3567465', 2 => 'IBM-4579645', 3 => 'IBM-1234567',4 => 'IBM-12345678', 5 => 'IBM-24374365'); 


$key = array_search($item_name, $stack); 
if ($key !== false) { 
    echo "The key where find was found is:" . $key; 
} else{ 
    echo $item_name . " was NOT FOUND in the array"; 
}; 
?> 

,它回来了 - 关键在哪儿找到的发现是:0

+1

我唯一的猜测是你的帖子变量可能有一个空格。尝试$ item_name = trim($ _ POST ['item_name']); – dano 2012-07-25 06:19:38

+0

确实,我得到了同样的结果。 @op:尝试'var_dump($ stack);'而不是。这很可能是你的值包含一些空格。编辑:什么@dano说也可能是真的,你可能想要做到这一点,并使用'$堆栈= array_map('修剪',$堆栈');' – Crisp 2012-07-25 06:26:08

+0

并将它应用到您的数组值。修整数组和字符串后 - 它的工作! – 2012-07-25 06:40:02