Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将阵列转换为更小的阵列?在php中_Php_Arrays - Fatal编程技术网

如何将阵列转换为更小的阵列?在php中

如何将阵列转换为更小的阵列?在php中,php,arrays,Php,Arrays,我有这样的数组这将解决您的问题。可以使用array_map()函数迭代每个值 $result = array_map( function( $value ) { return [ 'first_name'=>$value['first_name'], 'last_name'=> $value['last_name'] ]; }, $array ); print_r($result); 输出: Array ( [0] => Array

我有这样的数组这将解决您的问题。可以使用array_map()函数迭代每个值

 $result = array_map( function( $value ) {
       return [ 'first_name'=>$value['first_name'], 'last_name'=> $value['last_name'] ];
    }, $array );
    print_r($result);
输出:

Array
(
    [0] => Array
        (
            [first_name] => hassan
            [last_name] => hassani
        )
    [1] => Array
        (
            [first_name] => mohamad
            [last_name] => mohamadi
        )
)

有很多方法可以做到这一点,但这是我想到的第一件事。重新做数组。我将在下面提供的方法将为您提供一个示例,说明如何在不覆盖当前数组的情况下执行此操作,以备以后需要时使用。这种方法也很灵活

<?php
$array = Array(); //you won't need this, let's just assume we're using the array from your original post

$newArray = Array(); //create a new array, this will have less values than the original

foreach ($array as $k=>$v){
    if ($k == "first_name" or $k == "last_name"){ //only add to array if the key is "first_name" or "last_name"
        $newArray[$k] = $v; //adds it to $newArray
    }
}
print_r($newArray);
?>

您自己已经尝试过什么?我理解,当你(相对)不熟悉php和/或编程时,这些东西可能会很难理解——我假设你是,否则这个问题真的应该删除

这里有一些关于数组的介绍,以及如何在数组上循环。过来看!W3C通常有一些好的和可理解的信息


我将通过在数组上循环并删除所有您不想保留的条目来实现这一点,也就是说,不在您想保留的密钥数组中。或者,您可以通过指定需要删除的键来完成此操作。例如:

<?php
$array = [
  [
    "id" => "2",
    "first_name" => "hassan",
    "last_name" => "hassani",
    "created": "0000-00-00 00:00:01",
  ],
  [
    "id": "3",
    "first_name" => "mohamad",
    "last_name" => "mohamadi",
    "created" => "0000-00-00 00:00:00", 
  ]
]

$keepers = ["first_name", "last_name"]; // Make an array of keys we want to keep.

foreach ($array as $arr) { // Loop over the outer array 
  foreach ($arr as $key => $value){ // Loop over the inner array that actually holds the key=> value pairs.
    if (!in_array($key, $keepers)){ // Determine whether we want to keep this key.
      unset($arr[$key]) // This key is not in the $keepers-array, we'll go ahead and delete (i.e. unset) it.
    }
  }
}
您可以使用和使用键
id
created
从数组中删除项:

$result = array_map(function($x) {
    unset($x['id'], $x['created']);
    return $x;
}, $arrays);
这将导致:

Array
(
    [0] => Array
        (
            [first_name] => hassan
            [last_name] => hassani
        )

    [1] => Array
        (
            [first_name] => mohamad
            [last_name] => mohamadi
        )

)

到目前为止你做了什么?尝试了什么吗?更好的地方是你用sql查询删除一些列。她有一个多维数组,像这样循环会得到
$k
的整数。您需要在数组
$v
上循环以实际操作键=>值对。。。还是我弄错了?@Nielles我不确定。如果他从PHP脚本中打印出这个数组,我相当肯定它也会输出数字索引(当然,这不在数组的值内)。