web-dev-qa-db-ja.com

PHP配列の各項目にプレフィックスを追加します

PHP数字の配列を持っています。マイナス(-)を前に付けたいです。explodeとimplodeを使用することで可能になると思いますが、私のphpの知識はそうではありません。実際にそれを行うことができます。

本質的に私はこれから行きたいです:

$array = [1, 2, 3, 4, 5];

これに:

$array = [-1, -2, -3, -4, -5];

何か案は?

66
MBL

シンプル:

foreach ($array as &$value) {
   $value *= (-1);
}
unset($value);

配列が文字列でない場合:

foreach ($array as &$value) {
    $value = '-' . $value;
}
unset($value);
92
Rohit Chopra

配列値に接頭辞を付けるエレガントな方法(PHP 5.3以降):

$prefixed_array = preg_filter('/^/', 'prefix_', $array);

さらに、これはforeachよりも3倍以上高速です。

116
Dávid Horváth

この場合、 Rohitの答え がおそらく最良ですが、 PHP配列関数 はより複雑な状況では非常に便利です。

array_walk() を使用して、既存の配列を変更する配列の各要素に対して関数を実行できます。 array_map() はほぼ同じことを行いますが、既存の配列を変更する代わりに新しい配列を返します。同じ配列を使い続けたいように見えるため、使用する必要があります- array_walk()

array_walk() を使用して配列の要素を直接操作するには、参照(function(&$item))によって配列の項目を渡します。

Php5.3以降、array_walkで匿名関数を使用できます。

_// PHP 5.3 and beyond!
array_walk($array, function(&$item) { $item *= -1; }); // or $item = '-'.$item;
_

実施例

Php 5.3がちょっと派手すぎる場合は、 createfunction() を使用してください。

_// If you don't have PHP 5.3
array_walk($array,create_function('&$it','$it *= -1;')); //or $it = '-'.$it;
_

実施例

66
Peter Ajtai

次のようなことができます:

array_map(function($val) { return -$val;} , $array)
20
JRL
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
3
SarwarCSE

「nothing」を文字列で置き換えることができます。したがって、文字列の配列のプレフィックスを付けるには(最初に投稿された数字ではありません):

$prefixed_array = substr_replace($array, 'your prefix here', 0, 0);

つまり、$ the_arrayの各要素について、オフセット0、長さ0の(長さゼロの)文字列を取得し、プレフィックスに置き換えます。

参照:substr_replace

1
Dan Chadwick

以前にも同じ状況でした。

各配列値にプレフィックスを追加する

_function addPrefixToArray(array $array, string $prefix)
{
    return array_map(function ($arrayValues) use ($prefix) {
        return $prefix . $arrayValues;
    }, $array);
}
_

各配列値に接尾辞を追加する

_function addSuffixToArray(array $array, string $suffix)
{
    return array_map(function ($arrayValues) use ($suffix) {
        return $arrayValues . $suffix;
    }, $array);
}
_

テスト部分は次のとおりです。

_$array = [1, 2, 3, 4, 5];
_

print_r(addPrefixToArray($array, 'prefix'));

結果

_Array ([0] => prefix1 [1] => prefix2 [2] => prefix3 [3] => prefix4 [4] => prefix5)
_

print_r(addSuffixToArray($array, 'suffix'));

結果

_Array ([0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix)
_
0
Manojkiran.A