如何从$ _POST数组返回特定​​键?

时间:2010-06-07 20:10:40

标签: php post associative-array key

我想查看$ _POST中是否包含字符串的任何键。该字符串不是完整键,只是键的一部分。 (即搜索字符串=“delRowID”,$ _POST key =“delRowID_16”)。我曾尝试使用array_keys($ _ POST,“delRowID”),但它从未返回任何内容。

CODE

print_r($_POST);
print_r(array_keys($_POST,"delRowID"));

RETURNS

Array ( [delRowID] => 29 [qAction] => [elmUpdateId] => [elmTtl] => [elmDesc] => [elmStr] => ) Array ( )

5 个答案:

答案 0 :(得分:1)

使用array_keys()进行循环,并使用strpos()

检查密钥
foreach (array_keys($_POST) as $key) {
  if (strpos($key, 'delRowId') === 0) {
    echo $key." found!";
  }
}

答案 1 :(得分:1)

如果这是由表单发送的,请考虑将元素命名为数组元素。例如,

<input type="checkbox" name="delRowID[16]" />
<input type="checkbox" name="delRowID[17]" />

将作为名为$_POST['delRowID']的数组出现,其中包含每个有效输入的元素。

但是,这是一个人为的例子,可以更好地与其他输入类型配合使用。

对于复选框,最好这样做,这会创建一个数组,其中包含每个成功复选框的值,您可以轻松地循环:

<input type="checkbox" name="delRowID[]" value="16" />
<input type="checkbox" name="delRowID[]" value="17" />

另请参阅:How do I create arrays in a HTML <form>?

答案 2 :(得分:0)

循环通过array_keys($_POST)提供给您的密钥。每个字符串匹配。

另请注意,array_keys($_POST,"delRowID")会搜索与“delRowID”值相关联的键。

答案 3 :(得分:0)

因为您正在搜索部分文本,所以您可以遍历它:

foreach($_POST as $key => $value)
{
  if (strpos($key, 'delRowID') !== false)
  {
    echo $key;
    break;
  }
}

答案 4 :(得分:0)

另一种方式(扩展mads答案):

if( getKey( 'delRowId', $_POST ) ){
    // delRow?
}

function getKey($stringToFind, $array) {
  foreach ($_POST as $key => $val) {
    if (strpos($stringToFind, $key) !== false) {
     return $val;
    } 
  }
  return false;
}