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

您知道如何使用foreach
foreach
,因此请尝试一种解决方案并将其发布在此处。在请求帮助之前,您至少应该尝试解决您的问题。是的,但问题是我不确定该函数的名称,该函数用于搜索角色中的内容并将其删除;/老实说,我不只是要求输入代码,我真的在努力学习如何处理这样的数组。@user3332590:它叫
str\u replace
。而且它直接支持数组,所以您甚至不需要
foreach
。好了,preg_replace()就是我要找的,不需要做循环,因为我可以直接使用foreach,thanks@ReeCube:完全不需要循环:
$input=preg\u replace('/\s+/',''.$input)
@Jon是的,不需要循环,但如果您希望脚本也能与数组和对象一起工作,您的方式将出现异常,此函数是解决问题的安全方式problem@ReeCube:唯一的问题是“递归”不在问题中。此外,这远远不是解决问题的“安全方法”,因为它不适用于具有字符串键的数组,甚至不连续的数字键,或者是负数的数字键。最后,在我发表评论时,您自己的解决方案无论如何都不是递归的(尽管它在数组键问题上仍然存在缺陷)。建议多读少说。@Jon我更新了它,现在它是递归的,并带有自定义键。啊,我建议你也这样做,因为你的代码会抛出异常,这很糟糕!但是如果你有其他的笔记给我,就告诉我。