相关疑难解决方法(0)

PHP - 从以某个字符串开头的数组中获取所有键

我有一个看起来像这样的数组:

array(
  'abc' => 0,
  'foo-bcd' => 1,
  'foo-def' => 1,
  'foo-xyz' => 0,
  // ...
)
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到开头的元素foo-

php arrays array-filter

73
推荐指数
7
解决办法
7万
查看次数

如何改造这个阵列?

这是数据

$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

php arrays

9
推荐指数
2
解决办法
736
查看次数

PHP:如何从像数组的数组中获取元素

如果我有这样的阵列

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)

没有动乱不受欢迎的领域

php

9
推荐指数
4
解决办法
9969
查看次数

PDO PHP从关联数组插入到DB中

我有这样的数组

  $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这样的占位符,因为我可能并不总是得到这两列的值.如果有办法,请告诉我.否则我将不得不为每种类型的更新定义多个功能.

谢谢.

php mysql database arrays pdo

9
推荐指数
3
解决办法
2万
查看次数

根据另一个数组保留二维数组中每一行的元素

我有这个数组:

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)

php arrays filtering php-5.6

9
推荐指数
3
解决办法
2万
查看次数

如何使用PHP中的键数组过滤关联数组?

我有一个关联数组和一组键.

$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)

php arrays associative

8
推荐指数
2
解决办法
6645
查看次数

PDO:将额外参数传递给准备好的参数而不是需要

您是否可以使用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)

如果可以的话,我应该吗?这会减慢或导致我的数据库或脚本的安全漏洞吗?

如果我能让这个问题更清楚一点,请问.

谢谢!

pdo prepared-statement

6
推荐指数
2
解决办法
3235
查看次数

使用数组键创建新数组

鉴于:

$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)

php arrays

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

使用另一个数组php过滤数组

我有一个看起来像这样的数组:

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过滤数组但没有运气的函数.有什么帮助吗?谢谢!

php arrays filter

2
推荐指数
1
解决办法
1327
查看次数

使用keys数组过滤关联数组

我有以下数组:

$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)

php arrays

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

PHP get values by given keys

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 arrays

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

PHP - 仅使用现有数组中的选定键创建新数组

从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)

php arrays

0
推荐指数
1
解决办法
1614
查看次数

提高这段代码的速度?的foreach

$pass = array();

foreach ($var as $index) 
{
    if($index['Data']['Show'] == false)
        continue;

    $pass[] = $index;
}

echo json_encode($pass);
Run Code Online (Sandbox Code Playgroud)

我需要知道如何以更简化和更快的速度获得相同的结果.

php foreach

-6
推荐指数
1
解决办法
54
查看次数