标签: array-map

数组映射 PHP 多维数组

有一个多维数组

$template=Array (
 [0] => Array ( [id] => 352 [name] => a ) 
 [1] => Array ( [id] => 438 [name] => b ) 
 [2] => Array ( [id] => 351 [name] => c ) 
               ) 
Run Code Online (Sandbox Code Playgroud)

和一个数组映射函数

function myfunction()
{

return "[selected]=>null";
}
print_r(array_map("myfunction",$template));
Run Code Online (Sandbox Code Playgroud)

这导致

Array ( 
   [0] => [selected]=>null 
   [1] => [selected]=>null 
   [2] => [selected]=>null
    )
Run Code Online (Sandbox Code Playgroud)

我如何映射数组来获得这个结果

Array (  
        [0] => Array ( [id] => 352 [name] => a [selected] => null)  
        [1] => Array ( [id] => …
Run Code Online (Sandbox Code Playgroud)

php arrays array-map multidimensional-array

5
推荐指数
1
解决办法
9581
查看次数

React:如何防止在`map`中重新渲染子组件?

我试图将问题归结为一个尽可能简单的例子:

我们有一个子组件列表,每个子组件都称为NumChoice,每个子组件代表一个数字。NumChoice被包裹在React.memo. 在父组件中,我们有一个布尔数组choices,每个对应一个子组件NumChoice。首先, 的所有元素choices都是false。为了渲染子组件,我们遍历choices,并为每个选择生成相应的子组件NumChoice。我们chooseDivisibles在父组件中定义一个函数,使用useCallback它从每个子组件调用NumChoice。chooseDivisibles获取NumChoice调用它的人的索引并将其对应的元素更改choices为true。每个都是,否则,它的背景颜色是“白色”。NumChoice有一个“红色”的背景色,如果在其对应的元件choicestrue

完整代码可在:https : //codesandbox.io/s/react-rerender-l4e3c?fontsize=14&hidenavigation=1&theme=dark

包装NumChoiceinReact.memo和chooseDivisiblesin useCallback,我们希望只重新渲染NumChoice其相应元素发生choices变化的组件,但 React 会重新渲染它们。chooseDivisibles包含在 中useCallback,除了setChoices. 此外,NumChoice被包裹,React.memo并且只有在指定的道具改变时才应该重新渲染,但它们不会,并且改变choices不应该对重新渲染产生任何影响NumChoice。如果我们排除检查chooseDivisibles前一个和下一个 props的相等性,它会按预期工作,但我认为前一个和下一个的比较chooseDivisibles不应该影响重新渲染, …

array-map rerender reactjs usecallback react-memo

5
推荐指数
0
解决办法
3477
查看次数

使用array_map返回实例化对象的数组?

说我有以下内容:

class Thing {
   function __construct($id) {
     // some functionality to look up the record and initialize the object.

     return $this;
   }
}
Run Code Online (Sandbox Code Playgroud)

现在给出一个ID数组,我想最终得到一组实例化的东西.类似于以下内容:

$ids = array(1, 2, 3, 4, 5);
$things = array_map(array('Thing', 'new'), $ids); // Doesn't work
Run Code Online (Sandbox Code Playgroud)

当然,Thing类没有"新"方法,"__construct"也不受限制.我知道这可以通过循环$ ID的额外步骤来完成,但是有没有一种方法可以在每个使用array_map上调用"new Thing($ id)"?

php object instantiation array-map

4
推荐指数
1
解决办法
1251
查看次数

array_map并将字符串追加到数组的元素

我有这样一个数组:

$a = array('aa', 'bb', 'cc', 'dd');
Run Code Online (Sandbox Code Playgroud)

我想在数组的所有元素的乞讨时添加'rq'字符串.是否可以在此数组上调用array_map()?

php arrays array-map

4
推荐指数
1
解决办法
6863
查看次数

内存泄漏?!垃圾收集器在'array_map'中使用'create_function'时是否正确?

我在StackOverflow上找到了以下解决方案,以从对象数组中获取特定对象属性的数组:PHP - 从对象数组中提取属性

建议的解决方案是使用array_mapand within创建一个函数,create_function如下所示:

$catIds = array_map(create_function('$o', 'return $o->id;'), $objects);
Run Code Online (Sandbox Code Playgroud)

会发生什么?:array_map在这种情况下,每个数组元素都会运行一个stdClass对象.首先,它创建一个这样的函数:

function($o) {
    return $o->id;
}
Run Code Online (Sandbox Code Playgroud)

其次,它在当前迭代中为对象调用此函数.它的工作原理与它类似的解决方案几乎相同:

$catIds = array_map(function($o) { return $o->id; }, $objects);
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案只能在PHP版本> = 5.3中运行,因为它使用的Closure概念=> http://php.net/manual/de/class.closure.php

现在真正的问题:

第一个解决方案create_function增加了内存,因为创建的函数将被写入内存而不会被重用或销毁.在它的第二个解决方案中Closure.

因此,解决方案给出了相同的结果,但在内存方面有不同的行为.

以下示例:

// following array is given
$objects = array (
    [0] => stdClass (
        [id] => 1
    ),
    [1] => stdClass (
        [id] => 2
    ),
    [2] => stdClass (
        [id] => …
Run Code Online (Sandbox Code Playgroud)

php garbage-collection memory-leaks create-function array-map

4
推荐指数
1
解决办法
1712
查看次数

在二维数组中查找最小值/最大值

我有一个格式如下:

Array
(
    [0] => Array
        (
            [DateTime] => "2013-05-22 14:21:01"
            [Price] => 102.01
        )
    [1] => Array
        (
            [DateTime] => "2013-05-23 15:55:01"
            [Price] => 52.60
        )
    [2] => Array
        (
            [DateTime] => "2013-05-25 14:23:01"
            [Price] => 452.25
        )
    ... etc
)
Run Code Online (Sandbox Code Playgroud)

我需要发现最低和最高价值Price.

min只返回键.我也试过max(array_map("max", $data))但只会回来452.25.

我是否必须foreach手动使用?

php arrays max min array-map

4
推荐指数
1
解决办法
8776
查看次数

如何从array_map PHP返回

我对PHP很新,但是我理解一旦PHP return在函数中命中,它将退出函数并返回到调用它的位置.

我很困惑在下面的函数中如何或为什么array_map()开始return并在函数内部有另一个.

function array_plucked($toPluck, $arr) {
return array_map(function($item) use($toPluck) {
    return $item[$toPluck];
}, $arr); }
Run Code Online (Sandbox Code Playgroud)

每次它在数组中循环时究竟发生了什么$item[$toPluck],结果存储在哪里?

php return array-map

4
推荐指数
1
解决办法
1780
查看次数

PHP array_map trim +参数

我正在使用array_map修剪我的所有数组值,但我需要传递第三个参数,因为我需要的不仅仅是修剪空格,所以我传递了第三个参数.基本上我想修剪空格,单引号和双引号的所有数组值.

我有一个实用程序类,我在其中创建了该函数,它看起来像这样:

public function convertToArray($string, $trim = false) {
    $split = explode(",", $string);

    if($trim) {
        $split = array_map("trim", $split, array(" '\""));
    }

    return $split;
}
Run Code Online (Sandbox Code Playgroud)

不知怎的,我不能做这个工作.即使我按照这里的答案,我仍然可以在结果中看到双引号.

我甚至试过了

if($trim) {
    $split = array_map("trim", $split);
    $split = array_map("trim", $split, array("'"));
    $split = array_map("trim", $split, array('"'));
}
Run Code Online (Sandbox Code Playgroud)

但我仍然得到相同的结果.

php arrays trim array-map double-quotes

4
推荐指数
1
解决办法
4139
查看次数

使用array_map的多个函数

array_map接受字符串作为其第一个参数.有没有办法,使用数组而不是字符串,如:

.... array_map( array('trim','urlencode'), $my_array);
Run Code Online (Sandbox Code Playgroud)

所以我可以附加多个功能.

php arrays function array-map

4
推荐指数
1
解决办法
2293
查看次数

PHP array_map 函数内的回调函数

我有一个名为 的函数createCost,在该函数中,我有一个array_map接受数组的函数和一个checkDescription在createCost. 下面是一个例子:

public function createCost{

  $cost_example = array();
  function checkDescription($array_item)
  {
    return $array_item;
  }

  $array_mapped = array_map('checkDescription', $cost_example);
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到一个

array_map() expects parameter 1 to be a valid callback, function 'checkDescription' not found or invalid function name
Run Code Online (Sandbox Code Playgroud)

我的理解是它在checkDescription外部寻找函数,createCost但我如何checkDescription从内部调用?

php arrays array-map

4
推荐指数
1
解决办法
1万
查看次数