标签: associative-array

在PHP中返回关联数组的第一个键

我试图array_keys()通过引用来获取关联数组的第一个键,而不创建临时变量等.不幸的是,reset()并且array_shift()通过引用获取数组参数,因此似乎都不是可行的结果.

用PHP 5.4我将在天堂; array_keys($array)[0];,但不幸的是,这当然也不是一种选择.

我可以创建一个函数来实现这个目的,但我只能想象有一些PHP的array_*函数可以在单个语句中产生所需的结果,这是我想不到的或者想出来的.

所以:

$array = array('foo' => 'bar', 'hello' => 'world');

$firstKey = assorted_functions($array); // $firstKey = 'foo'
Run Code Online (Sandbox Code Playgroud)

在我的问题中"无参考"条款的原因只是因为我认为array_keys()是必需的(如果有一种方式通过参考,请消防)

我会使用key(),但这需要一个,reset()因为我不确定此操作时指针的位置.


附录

我正在跟进我最近的一个实现:正如我在评论中提到的,它将使用相同的内存,所以如果这是一个问题,这个问题没有解决方案.

$a = range(0,99999);
var_dump(memory_get_peak_usage()); // int(8644416)
$k = array_keys($a)[0];
var_dump(memory_get_peak_usage()); // int(17168824)
Run Code Online (Sandbox Code Playgroud)

知道这一点,因为PHP没有这样的优化功能,但认为有必要明确提及.

接受的答案的简洁性很好,如果你正在使用合理大小的数组,那么它们就可以工作了.

php arrays associative-array key

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

在PHP中显示数组值

所以,我第一次使用PHP,我正在尝试检索并显示数组的值.经过大量的谷歌搜索,我能找到的唯一方法是print_r,var_dump或者var_export.但是,所有这些方法都返回如下所示的内容:

[a] => apple
[b] => banana
[c] => orange
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何设计出这种风格.我需要去除[a] =>部分并添加逗号.我知道这必须是一个非常简单的过程,但我无法找到任何演示如何操作的文档.

php arrays associative-array

34
推荐指数
5
解决办法
20万
查看次数

Javascript:检查对象是否没有属性,或者map/associative-array是否为空

可能重复:
如何从JSON测试空Javascript对象?

在Javascript中是否有一种简单的方法来检查对象是否没有属性?或者换句话说,检查地图/关联数组是否为空的简单方法?例如,假设您有以下内容:

var nothingHere = {};
var somethingHere = {foo: "bar"};
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来判断哪一个是"空的"?我唯一能想到的是这样的事情:

function isEmpty(map) {
   var empty = true;

   for(var key in map) {
      empty = false;
      break;
   }

   return empty;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法(像本地财产/功能或其他东西)?

javascript associative-array map is-empty object-property

33
推荐指数
1
解决办法
5万
查看次数

javascript关联数组

在python中我可以做类似的事情myMap = {key: [value1, value2]},然后访问value2使用myMap[key][1]

我可以在javascript中做这样的事情吗?

javascript associative-array

32
推荐指数
4
解决办法
5万
查看次数

powershell有关联数组吗?

我正在编写一个返回id,name对的函数.

我想做点什么

$a = get-name-id-pair()
$a.Id
$a.Name
Run Code Online (Sandbox Code Playgroud)

喜欢在javascript中可能.或至少

$a = get-name-id-pair()
$a["id"]
$a["name"]
Run Code Online (Sandbox Code Playgroud)

喜欢在PHP中可能.我可以用PowerShell做到吗?

arrays powershell associative-array

31
推荐指数
4
解决办法
4万
查看次数

如何实现javascript数组?

即,以下代码如何:

var sup = new Array(5);
sup[0] = 'z3ero';
sup[1] = 'o3ne';
sup[4] = 'f3our';
document.write(sup.length + "<br />");
Run Code Online (Sandbox Code Playgroud)

输出'5'作为长度,当你所做的就是设置各种元素?

我对此代码的"问题"是,我不理解如何在length不调用getLength()setLength()方法的情况下进行更改.当我执行以下任何操作时:

a.length
a['length']
a.length = 4
a['length'] = 5
Run Code Online (Sandbox Code Playgroud)

在非数组对象上,它的行为类似于dict/associative数组.当我在数组对象上执行此操作时,它具有特殊含义.JavaScript中的哪种机制允许这种情况发生?javascript是否有某种类型的属性系统进行翻译

a.length
a['length']
Run Code Online (Sandbox Code Playgroud)

进入"获取"方法和

a.length = 4
a['length'] = 5
Run Code Online (Sandbox Code Playgroud)

进入"设置"方法?

javascript arrays associative-array

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

关联数组与SplObjectStorage

我正在研究代码来管理一系列独特的对象.这段代码的第一个原型使用了一个关联数组,基本上就像我一直这样做的那样.

但是,我也热衷于利用已经添加到更现代版本的PHP中的功能,例如SplObjectStorage来实现这一目的,部分原因在于学习体验,部分原因在于它必然会提供优势(我已经看到基准测试表明在很多情况下,SplObjectStorage可以比数组更快.

当前实现有一个关联数组,我在in_array中检查它是否在向对象添加新对象之前是否已经在数组中.

最大的问题,我可以SplObjectStorage看到的是,它似乎并没有(乍)支持键/值关联数组的行为,只能被视为一个索引数组.但是,PHP较新功能的文档不符合语言中较为成熟的部分的文档标准,我可能只是遗漏了一些东西.

我可以使用SplObjectStorage代替关联数组吗?如果是这样,我如何在添加新对象时定义键?更重要的是,与关联数组相比,SplObjectStorage的相对优势和劣势是什么?

php oop spl associative-array

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

jade中的Foreach循环(node.js模板引擎)

好吧,我从节点服务器获取一个关联数组,并尝试在Jade中呈现它.我显然需要一个foreach循环,但似乎没有任何工作!我尝试了这两个代码:

- foreach row in rows {
    li= row
- }
Run Code Online (Sandbox Code Playgroud)

- rows.forEach(function(item)) {
    li= item
- })
Run Code Online (Sandbox Code Playgroud)

我传递的数组称为"行".知道为什么这不起作用吗?我收到此错误:

500 SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)

并且,使用第二个代码:

500 SyntaxError: Unexpected token )
Run Code Online (Sandbox Code Playgroud)

foreach associative-array node.js pug

29
推荐指数
2
解决办法
4万
查看次数

如何使用Javascript文字表示法创建关联数组

据我所知,有没有associative arraysjavascript,只是objects.

但是,我可以像这样array使用字符串键创建bracket notation:

var myArray = [];
myArray['a'] = 200; 
myArray['b'] = 300; 
console.log(myArray); //prints [a: 200, b: 300]
Run Code Online (Sandbox Code Playgroud)

所以,我想在不使用的情况下做同样的事情 bracket notation

var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token:
Run Code Online (Sandbox Code Playgroud)

这也行不通

var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create?
Run Code Online (Sandbox Code Playgroud)

javascript arrays associative-array

29
推荐指数
3
解决办法
5万
查看次数

Redis如何存储关联数组?设置或哈希还是列表?

我对Redis的所有可用存储选项感到困惑.我想做一些简单的事情,我不想过度设计它.我正phpredis和我一起工作Redis v2.8.6.

我有这个简单的关联数组,我需要存储.我还需要能够通过其键检索项目并循环遍历所有项目.

$a = array(
    '12345' => array(
        'name' => 'Post A',
        'val2' => 'blah blah',
        'val3' => 'blah blah blah',
    ),
    '54321' => array(
        'name' => 'Post B',
        'val2' => 'blah blah',
        'val3' => 'blah blah blah',
    ),
    '998877' => array(
        'name' => 'Post C',
        'val2' => 'blah blah',
        'val3' => 'blah blah blah',
    )
);
Run Code Online (Sandbox Code Playgroud)

所以我到现在所做的是使用hash类型.像这样存储我的数组:

foreach ($a as $key => $value) {
    $this->redis->hSet('posts', $key, json_encode($value));
}
Run Code Online (Sandbox Code Playgroud)

就像我可以轻松地像这样访问密钥:

public function getPost($postId) …
Run Code Online (Sandbox Code Playgroud)

associative-array redis phpredis

28
推荐指数
3
解决办法
4万
查看次数