我有一个看起来像这样的数组:
array(
'abc' => 0,
'foo-bcd' => 1,
'foo-def' => 1,
'foo-xyz' => 0,
// ...
)
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到开头的元素foo-?
这是数据
$array = array(
'random' => 1,
'pewpew' => 2,
'temp' => 5,
'xoxo' => 3,
'qweqweqe' => 4,
);
$fields = array('random', 'xoxo', 'temp');
Run Code Online (Sandbox Code Playgroud)
我需要得到结果:
$result = array(
'random' => 1,
'xoxo' => 3,
'temp' => 5,
);
Run Code Online (Sandbox Code Playgroud)
我的意思是来自$ fields的密钥存在/订单适用于$ array.
问题是:我是否可以仅使用array_函数执行此转换?(我不想使用迭代)如果是:你可以链接我需要的功能吗?
(对不起拼写错误)
UPD.
PHP 5.2
如果我有这样的阵列
array [
y => 35
x => 51
z => 35
c_3 => 4
c_1 => 54
c_6 => 53
c_9 => 52
]
Run Code Online (Sandbox Code Playgroud)
我想得到一些
array [c_3=>4, c_1=>54, c_6=>53, c_9=>52]
Run Code Online (Sandbox Code Playgroud)
没有动乱不受欢迎的领域
我有这样的数组
$a = array( 'phone' => 111111111, 'image' => "sadasdasd43eadasdad" );
Run Code Online (Sandbox Code Playgroud)
当我进行var-dump时,我得到了这个 - >
{ ["phone"]=> int(111111111) ["image"]=> string(19) "sadasdasd43eadasdad" }
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用IN语句将其添加到数据库 -
$q = $DBH->prepare("INSERT INTO user :column_string VALUES :value_string");
$q->bindParam(':column_string',implode(',',array_keys($a)));
$q->bindParam(':value_string',implode(',',array_values($a)));
$q->execute();
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是implode返回一个字符串.但'phone'列是数据库中的整数,并且数组也将其存储为整数.因此我收到SQL错误,因为我的最终查询看起来像这样 -
INSERT INTO user 'phone,image' values '111111111,sadasdasd43eadasdad';
Run Code Online (Sandbox Code Playgroud)
哪个是错误的查询.有没有办法解决它.
我的列名是动态的,基于用户想要插入的内容.所以我不能使用像:phone和:image这样的占位符,因为我可能并不总是得到这两列的值.如果有办法,请告诉我.否则我将不得不为每种类型的更新定义多个功能.
谢谢.
我有这个数组:
0 => array:3 [
"product_id" => "1138"
"product_image" => "/resources/medias/shop/products/shop-6500720--1.png"
"product_sku" => "6500722"
]
1 => array:3 [
"product_id" => "1144"
"product_image" => "/resources/medias/shop/products/shop-6501041--1.png"
"product_sku" => "6501046"
]
2 => array:3 [
"product_id" => "113"
"product_image" => "/resources/medias/shop/products/shop-6294909--1.png"
"product_sku" => "6294915"
]
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种获取仅包含必需列的多数组的方法(array_column不是一个选项,因为它只给我 1 列)。
我做了什么
function colsFromArray($array, $keys)
{
return array_map(function ($el) use ($keys) {
return array_map(function ($c) use ($el) {
return $el[$c];
}, $keys);
}, $array);
}
$array = array(
[
"product_id" => "1138",
"product_image" …Run Code Online (Sandbox Code Playgroud) 我有一个关联数组和一组键.
$A = array('a'=>'book', 'b'=>'pencil', 'c'=>'pen');
$B = array('a', 'b');
Run Code Online (Sandbox Code Playgroud)
我如何从$A密钥所在的所有元素构建关联数组$B?对于上面的例子,答案应该是
$C = array('a'=>'book', 'b'=>'pencil');
Run Code Online (Sandbox Code Playgroud) 您是否可以使用PDO向准备好的语句发送超出需要的参数而没有不良副作用?
这可能看起来像一个奇怪的问题,但我问,因为我连续4个查询,它们都使用相似和不同的参数.查询的相关部分:
第1名(选择,与其他人不同):
WHERE threadID = :tid
第二(选择):
WHERE user_ID = :u_ID AND thread_ID = :tid
第3次(如果第2次成功则更新):
SET time = :current_time WHERE user_ID = :u_ID AND thread_ID = :tid
第4次(如果第二次失败则插入):
VALUES (:u_ID, :tid, :current_time)
我可以在开头声明一个带有三个参数的数组,并将其用于所有4个查询吗?
为了解决任何混淆,查询将单独执行.它是重用的参数变量,因此这意味着某些查询将接收它们不需要的参数.所以类似于:
$parameters = array(':tid' => $tid, ':u_ID' => $u_ID, ':current_time' => $time);
$1st = $db->prepare($query1);
$1st->execute($parameters);
$2nd = $db->prepare($query2);
$2nd->execute($parameters);
$3rd = $db->prepare($query3);
$3rd->execute($parameters);
$4th = $db->prepare($query4);
$4th->execute($parameters);
Run Code Online (Sandbox Code Playgroud)
如果可以的话,我应该吗?这会减慢或导致我的数据库或脚本的安全漏洞吗?
如果我能让这个问题更清楚一点,请问.
谢谢!
鉴于:
$data = array(
"some" => "163",
"rand" => "630",
"om" => "43",
"words" => "924",
"as" => "4",
"keys" => "54"
);
Run Code Online (Sandbox Code Playgroud)
我想要一个只使用与那些特定键匹配的键的新数组:
$keys = array( "some", "thing", "rand", "keys" );
Run Code Online (Sandbox Code Playgroud)
我想返回一个包含这些键的数组,创建:
$arr = array(
"some" => "163",
"rand" => "630",
"keys" => "54"
);
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数组:
Array
(
[333824-00A-BLK-10] => Array
(
[classId] => 44
[inv] => 0.000
[onOrder] => 0
[code] => 333824-00A-BLK-10
)
[333824-00A-BLK-10.5] => Array
(
[classId] => 44
[inv] => 0.000
[onOrder] => 0
[code] => 333824-00A-BLK-10.5
)
)
Run Code Online (Sandbox Code Playgroud)
我想使用另一个看起来像下面的数组来过滤它:
Array
(
[0] => 333824-00A-BLK-10
[1] => 333824-00A-BLK-10.5
[2] => 333824-00A-BLK-11
[3] => 333824-00A-BLK-11.5
[4] => 333824-00A-BLK-12
)
Run Code Online (Sandbox Code Playgroud)
我想将结果保留在数组中,并删除不匹配的键.我尝试过一个用foreach过滤数组但没有运气的函数.有什么帮助吗?谢谢!
我有以下数组:
$keys
array (size=2)
0 => string 'foo' (length=3)
1 => string 'buz' (length=3)
Run Code Online (Sandbox Code Playgroud)
$data
array (size=3)
'foo' => int 1
'bar' => int 2
'buz' => int 3
Run Code Online (Sandbox Code Playgroud)
如何$data通过$keys值过滤数组?期望的输出:
array (size=3)
'foo' => int 1
'buz' => int 3
Run Code Online (Sandbox Code Playgroud) I have array like this:
$user = [
'id' => 1,
'fname' => 'name1',
'lname' => 'lname',
'age' => 20
];
Run Code Online (Sandbox Code Playgroud)
I want to get values by given keys. Is there function already.
$userData = array....($user, ['fname', 'lname']); // get only fname and lname from user
Run Code Online (Sandbox Code Playgroud)
I dont want to to for loops or similar.
Thanks
从PHP中的数组中仅获取选定键及其值的最简单方法是什么?例如,如果我有一个数组:
$meta = [
"nickname" => [
0 => "John"
]
"first_name" => [
0 => "John"
]
"last_name" => [
0 => "Doe"
]
"description" => array:1 [
0 => ""
]
"rich_editing" => [
0 => "true"
]
"comment_shortcuts" => [
0 => "false"
]
"admin_color" => [
0 => "fresh"
]
"use_ssl" => array:1 [
0 => "0"
]
"show_admin_bar_front" => [
0 => "true"
]
"locale" => [
0 => ""
]
"wp_capabilities" => [
0 …Run Code Online (Sandbox Code Playgroud) $pass = array();
foreach ($var as $index)
{
if($index['Data']['Show'] == false)
continue;
$pass[] = $index;
}
echo json_encode($pass);
Run Code Online (Sandbox Code Playgroud)
我需要知道如何以更简化和更快的速度获得相同的结果.