Php 搜索数组中的项并从中生成新变量
假设我有一个这样的数组Php 搜索数组中的项并从中生成新变量,php,arrays,foreach,Php,Arrays,Foreach,假设我有一个这样的数组array('first item','seconditem','third item') 现在我想搜索变量中的所有项(使用foreach,因为我假设我不知道数组中有多少项) 我如何删除所有空格并将它们添加到一个新数组中,其结构基本相同,但它们将显示为: array('firstitem','seconditem','thirditem') 而不是: array('first item', 'seconditem', 'third item') 顺便说一下,在PHP中.
array('first item','seconditem','third item')
现在我想搜索变量中的所有项(使用foreach
,因为我假设我不知道数组中有多少项)
我如何删除所有空格并将它们添加到一个新数组中,其结构基本相同,但它们将显示为:
array('firstitem','seconditem','thirditem')
而不是:
array('first item', 'seconditem', 'third item')
顺便说一下,在PHP中..试试这个:
function removeSpaces($input) {
foreach (array_keys($input) as $i) {
if (is_string($input[$i])) {
$input[$i] = preg_replace('/\s+/', '', $input[$i]);
} elseif (is_array($input[$i])) {
$input[$i] = removeSpaces($input[$i]);
}
}
return $input;
}
$array = array('key1' => 'test item', array('first item', 117 => 'seconditem', 'third item'));
$array = removeSpaces($array);
print_r($array);
Array
(
[key1] => testitem
[0] => Array
(
[0] => firstitem
[117] => seconditem
[118] => thirditem
)
)
用法:
function removeSpaces($input) {
foreach (array_keys($input) as $i) {
if (is_string($input[$i])) {
$input[$i] = preg_replace('/\s+/', '', $input[$i]);
} elseif (is_array($input[$i])) {
$input[$i] = removeSpaces($input[$i]);
}
}
return $input;
}
$array = array('key1' => 'test item', array('first item', 117 => 'seconditem', 'third item'));
$array = removeSpaces($array);
print_r($array);
Array
(
[key1] => testitem
[0] => Array
(
[0] => firstitem
[117] => seconditem
[118] => thirditem
)
)
输出:
function removeSpaces($input) {
foreach (array_keys($input) as $i) {
if (is_string($input[$i])) {
$input[$i] = preg_replace('/\s+/', '', $input[$i]);
} elseif (is_array($input[$i])) {
$input[$i] = removeSpaces($input[$i]);
}
}
return $input;
}
$array = array('key1' => 'test item', array('first item', 117 => 'seconditem', 'third item'));
$array = removeSpaces($array);
print_r($array);
Array
(
[key1] => testitem
[0] => Array
(
[0] => firstitem
[117] => seconditem
[118] => thirditem
)
)
此函数使用自定义密钥递归和安全地工作!:)怎么样
$arr = array('firstitem', 'second item', 'third item');
array_walk($arr, function(&$value, $key) { $value = str_replace(' ', '', $value); });
print_r($arr);
给予
如果不希望更改原始数组,请先复制它(
$arr2=$arr
) 您知道如何使用foreachforeach
,因此请尝试一种解决方案并将其发布在此处。在请求帮助之前,您至少应该尝试解决您的问题。是的,但问题是我不确定该函数的名称,该函数用于搜索角色中的内容并将其删除;/老实说,我不只是要求输入代码,我真的在努力学习如何处理这样的数组。@user3332590:它叫str\u replace
。而且它直接支持数组,所以您甚至不需要foreach
。好了,preg_replace()就是我要找的,不需要做循环,因为我可以直接使用foreach,thanks@ReeCube:完全不需要循环:$input=preg\u replace('/\s+/',''.$input)
@Jon是的,不需要循环,但如果您希望脚本也能与数组和对象一起工作,您的方式将出现异常,此函数是解决问题的安全方式problem@ReeCube:唯一的问题是“递归”不在问题中。此外,这远远不是解决问题的“安全方法”,因为它不适用于具有字符串键的数组,甚至不连续的数字键,或者是负数的数字键。最后,在我发表评论时,您自己的解决方案无论如何都不是递归的(尽管它在数组键问题上仍然存在缺陷)。建议多读少说。@Jon我更新了它,现在它是递归的,并带有自定义键。啊,我建议你也这样做,因为你的代码会抛出异常,这很糟糕!但是如果你有其他的笔记给我,就告诉我。