morrelinko/array-take

用于快速检索数组元素的功能。

1.1.0 2015-10-20 13:03 UTC

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"]
	 * 	]
	 */

享受编程!!

http://contactlyapp.com 支持