morrelinko / array-take
用于快速检索数组元素的功能。
1.1.0
2015-10-20 13:03 UTC
Requires
- php: >=5.3
This package is not auto-updated.
Last update: 2024-09-28 18:53:09 UTC
README
在处理数组时,从中检索元素可能会很繁琐。有些人会创建一个额外的数组来存储期望的元素,并在原始数组上执行大量的 isset 检查。
例如,如果你想从表单中检索一些值,你可能做类似这样的事情:(这只是一个示例)
<?php
if (isset($createData["username"])) {
$createData["username"] = $_POST["username"];
}
if (isset($createData["first_name"])) {
$createData["first_name"] = $_POST["fname"];
}
if (isset($createData["password"])) {
$createData["password"] = password_hash($_POST["username"], PASSWORD_DEFAULT);
}
$someService->createUser($createData);
想象一下,如果你要处理一个非常长的表单呢!!
已经足够了!array_take 提供了一种更好的方法
<?php
$createData = Morrelinko\array_take($_POST, [
"username",
"first_name" => "fname",
"password" => function($value) {
return password_hash($value, PASSWORD_DEFAULT):
}
]);
$someService->createUser($createData);
使用方法
从一维数组中检索值 注意:如果指定的键在数组中不可用,则跳过并不会包含在新的数组中。
<?php
$user = [
"name" => "Laju Morrison",
"hobby" => "None",
"wedontneedthis" => "somevalue"
];
$correctedUser = Morrelinko\array_take($user, ["name", "hobby"]);
/**
* Output:
*
* [
* "name" => "Laju Morrison",
* "hobby" => "None",
* ]
*/
在新的数组中重命名键
<?php
$user = [
"name" => "Laju Morrison",
"birthday" => "1000/ask/google",
"wedontneedthis" => "somevalue"
];
$user = Morrelinko\array_take($user, ["name" => "user_name", "birthday"]);
/**
* Output:
*
* [
* "user_name" => "Laju Morrison",
* "birthday" => "1000/ask/google",
* ]
*/
通过匿名函数修改值
<?php
$user = [
"name" => "Laju Morrison",
"password" => "123456"
];
$user = Morrelinko\array_take($user, [
"name",
"password" => function($value) {
return password_hash($value, PASSWORD_BCRYPT):
}
]);
/**
* Output:
*
* [
* "name" => "Laju Morrison",
* "password" => "$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K",
* ]
*/
如果传递了一个二维数组,则过滤器将应用于列表中的每个项目
<?php
$users = [
["name" => "Laju Morrison", "status" => "Dreaming..."],
["name" => "John Doe", "status" => ""],
["name" => "Mary Alice", "status" => ""]
];
$users = Morrelinko\array_take($users, ["name"]);
/**
* Output:
*
* [
* ["name" => "Laju Morrison"],
* ["name" => "John Doe"],
* ["name" => "Mary Alice"]
* ]
*/
享受编程!!