是否有类似于array_column多维数组的函数?是否有一个函数可以将下面的第一个数组转换为第二个数组:
Array
(
[0] => Array
(
[foodType] => fruits
[itemID] => 1
[itemName] => apple
)
[1] => Array
(
[foodType] => fruits
[itemID] => 2
[itemName] => banana
)
[2] => Array
(
[foodType] => veggies
[itemID] => 3
[itemName] => carrot
)
[3] => Array
(
[foodType] => veggies
[itemID] => 4
[itemName] => broccoli
)
)
Run Code Online (Sandbox Code Playgroud)
结果数组:
Array
(
[fruits] => Array
(
[0] => Array
(
[itemID] => 1
[itemName] => apple
) …Run Code Online (Sandbox Code Playgroud) TL;DR我想知道@> {as_champion, whatever}使用和使用之间的优缺点是什么(或者甚至是等效的)IN ('as_champion', 'whatever')。详情如下:
我正在使用Rails并使用Postgres的数组列类型,但是由于Rails finder方法不能很好地使用它,因此不得不对查询使用原始sql。我找到了一种可行的方法,但想知道首选的方法是:
在roles该列Memberships表是我的数组列。它是通过rails这样添加的:
add_column :memberships, :roles, :text, array: true
Run Code Online (Sandbox Code Playgroud)
当我检查表格时,它显示的类型为:(text[]不确定那是否是Postgres真正表示数组列的方式,还是那是Rails shenanigans。
要查询它,我要做类似的事情:
Membership.where("roles @> ?", '{as_champion, whatever}')
Run Code Online (Sandbox Code Playgroud) postgresql ruby-on-rails ruby-on-rails-4 rails-activerecord array-column
我有一个下面给出的格式的数据框。
movieId1 | genreList1 | genreList2
--------------------------------------------------
1 |[Adventure,Comedy] |[Adventure]
2 |[Animation,Drama,War] |[War,Drama]
3 |[Adventure,Drama] |[Drama,War]
Run Code Online (Sandbox Code Playgroud)
并尝试创建另一个标志列,显示流派列表 2 是否是流派列表 1 的子集
movieId1 | genreList1 | genreList2 | Flag
---------------------------------------------------------------
1 |[Adventure,Comedy] | [Adventure] |1
2 |[Animation,Drama,War] | [War,Drama] |1
3 |[Adventure,Drama] | [Drama,War] |0
Run Code Online (Sandbox Code Playgroud)
我试过这个
def intersect_check(a: Array[String], b: Array[String]): Int = {
if (b.sameElements(a.intersect(b))) { return 1 }
else { return 2 }
}
def intersect_check_udf =
udf((colvalue1: Array[String], colvalue2: Array[String]) => intersect_check(colvalue1, colvalue2))
data = data.withColumn("Flag", intersect_check_udf(col("genreList1"), col("genreList2"))) …Run Code Online (Sandbox Code Playgroud) 什么是转换看起来像这样的数组的好方法:
Array (
[0] = Array (
[0] = Array (
[key] = val
[key2] = val2
)
)
[1] = Array (
[0] = Array (
[key] = val
[key2] = val2
)
)
)
Run Code Online (Sandbox Code Playgroud)
至
Array (
[0] = Array (
[key] = val
[key] = val2
)
[1] = Array (
[key] = val
[key] = val2
)
)
Run Code Online (Sandbox Code Playgroud) 我使用以下代码来回显数组中的最小值:
$array = [
['a' => 0, 'f' => 0, 'l' => 61.60],
['a' => 38, 'f' => 0, 'l' => 11.99],
['a' => 28, 'f' => 0, 'l' => 3.40],
];
$min = min(array_column($array, 'a'));
echo $min;
Run Code Online (Sandbox Code Playgroud)
现在我想0从结果中排除,我知道我可以使用它array_filter()来实现这一点,但是我需要处理数组两次吗?
我有这个数组:
Array
(
[0] => Array
(
[fName] => Alice
[lName] => Gibson
)
[1] => Array
(
[fName] => Jack
[lName] => Smith
)
[2] => Array
(
[fName] => Bruce
[lName] => Lee
)
)
Run Code Online (Sandbox Code Playgroud)
如何获取包含所有fName值的数组:
["Alice","Jack","Bruce"]
Run Code Online (Sandbox Code Playgroud)
我尝试和工作的是:
foreach($myArray as $info){
$newArray[] = $info['fName'];
}
Run Code Online (Sandbox Code Playgroud)
题:
是否可以使用单个函数而不是循环?
array-column ×6
php ×4
arrays ×2
apache-spark ×1
filtering ×1
flatten ×1
min ×1
postgresql ×1
scala ×1