对键的每个值执行函数

时间:2016-12-20 10:59:04

标签: php arrays

我有一个具有以下结构的数组:

$array = array(
    array("animal" => "dog","color" => "black"),
    array("animal" => "cat","color" => "white"),
    array("animal" => "mouse","color" => "grey")
);

现在我需要对动物的每个值执行一个函数,比如将值设为大写。这是预期的输出:

array(3) {
  [0]=>
  array(2) {
    ["animal"]=>
    string(3) "DOG"
    ["color"]=>
    string(5) "black"
  }
  [1]=>
  array(2) {
    ["animal"]=>
    string(3) "CAT"
    ["color"]=>
    string(5) "white"
  }
  [2]=>
  array(2) {
    ["animal"]=>
    string(5) "MOUSE"
    ["color"]=>
    string(4) "grey"
  }
}

当我这样做时

for (int i=0; i<=$array.size(); i++) {
    $array["animal"] = array_map('strtoupper', $array["animal"]);
}

我收到此错误:

<b>Parse error</b>:  syntax error, unexpected 'i' (T_STRING), expecting ';' in <b>[...][...]</b> on line <b>15</b><br />

3 个答案:

答案 0 :(得分:3)

您可以通过以下方式实现此目的:

<?php
$array = array(
    array("animal"=>"dog","color"=>"black"),
     array("animal"=>"cat","color"=>"white"),
     array("animal"=>"mouse","color"=>"grey")
);

foreach ($array as $key => $value) {

    foreach ($value as $key1 => $value1) {

        if($key1 == 'animal'){
            $keys = ucfirst($value1);

            $array[$key][$key1]=$keys;
        }
    }
}
echo "<pre>";print_r($array);

?>

答案 1 :(得分:0)

您也可以使用PHP的array_walk函数

array_walk

$array = array(
    array("animal"=>"dog","color"=>"black"),
     array("animal"=>"cat","color"=>"white"),
     array("animal"=>"mouse","color"=>"grey")
    );

$array_map = array_walk($array, 'walk_array');

function walk_array(&$item, $key){

$item['animal'] = strtoupper($item['animal']);
}
echo '<pre>';
print_r($array);

ScreenShot For Array Walk Function

答案 2 :(得分:0)

解决方案

您可以使用for()循环来迭代您的动物。您必须使用count()函数转换为变量来计算您首先获得的动物数量。然后,您可以使用animal函数在strtoupper()索引上设置大写字母。另请注意,您可以将新的PHP语法用于像[]这样的数组,这是一种更快捷的方法。

源代码

<?php

$animals = [
    [
        'animal' => 'dog',
        'color' => 'black'
    ],

    [
        'animal' => 'cat',
        'color' => 'white'
    ],

    [
        'animal' => 'mouse',
        'color' => 'grey'
    ]
];

for ($i = 0; $i < count($animals); $i++)
{
    $animals[$i]['animal'] = strtoupper($animals[$i]['animal']);
}

echo '<pre>';
print_r($animals);
echo '</pre>';

结果

Array
(
    [0] => Array
        (
            [animal] => DOG
            [color] => black
        )

    [1] => Array
        (
            [animal] => CAT
            [color] => white
        )

    [2] => Array
        (
            [animal] => MOUSE
            [color] => grey
        )

)

Demo

PHP : for loop

PHP : count()

PHP : strtoupper()

PHP : arrays