【问题标题】:Separate a String and check if the string is the key of array in php分离一个字符串并检查该字符串是否是php中数组的键
【发布时间】:2018-02-03 10:54:16
【问题描述】:

我正在尝试根据空格将它们全部分开。

$string = "1 2 3 10 12";

根据这个字符串,我想这样分开。

$a = "1";
$b = "2";
$c = "3";
$d = "10";
$e = "12";

之后,我想检查这些字符串是否包含在数组的键中。这是我的数组,

$data = [
"1" => "Book",
"2" => "Paper",
"3" => "Pencil",
"10" => "Eraser",
"11" => "Ruler",
];

那么,如何分离一个数组并将各个部分存储在每个变量中? 以及如何检查这些变量是否作为键包含在数组中?对不起我的英语:D。谢谢。

【问题讨论】:

  • 有什么尝试吗?尝试使用空间爆炸?
  • 我尝试使用 str_replace()、preg_replace() 函数分隔字符串。但我不能得到我想要的:(

标签: php arrays string key


【解决方案1】:

使用explode 函数分隔值,然后使用array key exists 检查数组键是否存在。

$stringArray = explode(" ",$string);

foreach($stringArray as $stringPeice){
   if(array_key_exists($stringPeice, $data)){
     //do something
   }
}

【讨论】:

  • 是的,我会再试一次。谢谢。
  • 有多种方法可以做到这一点。这完全取决于您希望如何处理这些数据。如果您需要检查单个字符串的某些内容,我的回答是最相关的。但是,如果您需要检查整个数组,请使用@sevavietl answer。
  • 是的,我只想显示分隔字符串作为数组键的值。
【解决方案2】:

您可以使用explode 创建一个键数组,然后使用array_diff 获取一个不在$data 中的键数组:

$string = "1 2 3 10 12";

$keys = explode(' ', $string);

$data = [
    "1" => "Book",
    "2" => "Paper",
    "3" => "Pencil",
    "10" => "Eraser",
    "11" => "Ruler",
];

$diff = array_diff($keys, array_keys($data));

这里是the demo

【讨论】:

  • 谢谢。我会尝试使用该测试功能。
【解决方案3】:

如果您想从$data 中获取其key 存在于$string 中的条目,您可以使用array_intersect_key()array_fill_keys() 从爆炸$string 的结果中创建一个包含key 的数组:

$o = array_intersect_key($data, array_fill_keys(explode(" ", $string), ""));

Here's a demo

【讨论】:

  • 谢谢。我也将测试这段代码,并了解更多关于 php 中的数组函数。
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 2019-05-11
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2011-02-07
相关资源
最近更新 更多