我发现jCache和其他一些使用关联数组的本土方法.如果您有使用jCache的经验,是否有任何限制?
我有一个如下命名的数组$test_package_data.作为参考我打印它的前两个元素:
Array
(
[0] => Array
(
[test_pack_id] => 9f27643023a83addd5eed41c4aade840
[test_pack_name] => Exams Combo
[test_pack_desc] => This Package contains 24 tests of Reasoning, English and Quantitative Aptitude.
Total Tests in this Package : 26
[test_pack_type_id] => 3
[test_pack_image] =>
[test_pack_validity_year] => 0
[test_pack_validity_month] => 3
[test_pack_validity_days] => 0
[test_pack_plan] => paid
[test_pack_price] => 399.00
[test_pack_no_tests] => 0
[test_pack_publish] => yes
[test_pack_sold] => 1
[test_pack_created_staff_id] => ff8d4a5ea6bf11dce105aa2fa7b959b8
[test_pack_updated_staff_id] => 81c4e3607c7e56bbf5461ef150437675
[test_pack_created_date] => 303
[test_pack_updated_date] => 1349235701
[test_pack_purchase_date] => 255 …Run Code Online (Sandbox Code Playgroud) 我继承了一些代码,这些代码将成为一些额外工作的基础.看看存储过程,我看到了很多关联数组.
其中一些由binary_integers索引,一些由pls_integers索引.这两者有什么不同吗?
我查看了文档,但除此之外:
PL/SQL数据类型
PLS_INTEGER和BINARY_INTEGER相同.为简单起见,本文档使用PLS_INTEGER来表示PLS_INTEGER和BINARY_INTEGER.
我发现两者之间没有任何区别.那有什么区别?是否出于历史/兼容性原因?
我正在使用Oracle 10gR2
让我们说我有这个数组:
$array = array('a'=>1,'z'=>2,'d'=>4);
在后来的剧本,我想添加值'c'=>3之前'z'.我怎样才能做到这一点?
编辑:是的,订单很重要.当我通过数组运行foreach()时,我不希望将新添加的值添加到数组的末尾.我从mysql_fetch_assoc()获取此数组
编辑2:我上面使用的键是占位符.使用ksort()将无法达到我想要的效果.
编辑3:http://www.php.net/manual/en/function.array-splice.php#88896完成了我正在寻找的东西,但我正在寻找更简单的东西.
编辑4:谢谢你的downvotes.我对你的答案给出了反馈,你无能为力,所以你贬低并要求关闭这个问题,因为你不知道答案.谢谢.
编辑5:获取一个包含约30列的示例数据库表.我使用mysql_fetch_assoc()获取此数据.在这个新数组中,在'pizza'和'drink'列之后,我想添加一个新列'full_dinner',它结合了'pizza'和'drink'的值,这样当我在所述数组上运行foreach()时,'full_dinner'直接来自'drink'
我需要在Java中有一个自动按值排序的映射 - 这样当我添加新的键值对或更新现有键值对的值时,它会随时保持排序,甚至删除一些条目.
还请记住,这张地图将会非常庞大(数百万,甚至是数百万条的大小).
所以基本上我正在寻找以下功能:
假设我们有一个实现上述功能的"SortedByValuesMap"类,我们有以下代码:
SortedByValuesMap<String,Long> sorted_map = new SortedByValuesMap<String, Long>();
sorted_map.put("apples", 4);
sorted_map.put("oranges", 2);
sorted_map.put("bananas", 1);
sorted_map.put("lemons", 3);
sorted_map.put("bananas", 6);
for (String key : sorted_map.keySet()) {
System.out.println(key + ":" + sorted_map.get(key));
}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
bananas:6
apples:4
lemons:3
oranges:2
Run Code Online (Sandbox Code Playgroud)
特别是,对我来说真正重要的是能够随时获得具有最低值的条目 - 使用如下命令:
smallestItem = sorted_map.lastEntry();
Run Code Online (Sandbox Code Playgroud)
哪个应该给我'橘子'条目
编辑:我是一个Java新手所以请详细说明你的答案 - 谢谢
EDIT2:这可能会有所帮助:我正在使用它来计算大文本文件中的单词(对于那些熟悉的人:特别是n-gram).所以我需要建立一个地图,其中键是单词,值是这些单词的频率.但是,由于限制(如RAM),我想只保留X最常用的单词 - 但事先你不能知道哪些是最常用的单词.因此,我认为它可能起作用的方式(作为近似)是开始计算单词,当地图达到上限(如1 mil条目)时,将删除最不频繁的条目,以便将地图的大小保持为总是1密耳.
我确定之前已经问过这个问题,我很抱歉没先找到它.
原始数组:
[0] => Array
(
[categoryId] => 1
[eventId] => 2
[eventName] => 3
[vendorName] => 4
)
[1] => Array
(
[categoryId] => 5
[eventId] => 6
[eventName] => 7
[vendorName] => 8
)
[2] => Array
(
[categoryId] => 9
[eventId] => 10
[eventName] => 11
[vendorName] => 12
)
Run Code Online (Sandbox Code Playgroud)
我希望得到的结果是:print_r(get_values_from_a_key_in_arrays('categoryId',$ array));
[0] => 1
[1] => 5
[2] => 9
Run Code Online (Sandbox Code Playgroud)
我只是在寻找比编写自己的基于foreach的功能更清晰的东西.如果foreach是答案,我已经有了.
编辑:我不想使用硬编码密钥,我只是展示了一个示例调用解决方案.谢谢!^ _ ^
PHP 5.3快速抓取解决方案:
private function pluck($key, $data) {
return array_reduce($data, function($result, $array) …Run Code Online (Sandbox Code Playgroud) 实际上很简单的问题..
是否有可能在PHP中将两个相同长度的独立数组合并到一个关联数组中,其中第一个数组的值用作关联数组中的键?
我当然可以做到这一点,但我正在寻找另一个(内置)功能,或更有效的解决方案..?
function Combine($array1, $array2) {
if(count($array1) == count($array2)) {
$assArray = array();
for($i=0;$i<count($array1);$i++) {
$assArray[$array1[$i]] = $array2[$i];
}
return $assArray;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个关联数组,创建一个空数组,然后添加一个(indexName- >值)对:
var arrayName = new Array;
arrayName["indexName"] = value;
// i know i can also do the last line like this:
arrayName.indexName = value;
Run Code Online (Sandbox Code Playgroud)
当我将值分配给indexName我想要indexName动态和变量的值时.所以我尝试了这个:
arrayName[eval("nume")] = value;
Run Code Online (Sandbox Code Playgroud)
哪里:
var var1 = "index";
var var2 = "Name";
var nume = '"' + var1 + var2 + '"';
Run Code Online (Sandbox Code Playgroud)
但是:alert(arrayName["indexName"]);没有返回"价值"......它说"未定义"
有什么我想念的吗?(我不熟悉eval()); 如果我正在尝试的方式是死路一条,还有另一种方法可以使关联数组值的索引名称动态化吗?
我在emacs lisp中有一个列表:
(setq a1
'((:k1 . 1)
(:k2 . 2)
(:k3 . 3)))
Run Code Online (Sandbox Code Playgroud)
我想将值改为:k1到10,就像(:k1 . 10).我怎么做?
我试过(setf (assoc :k1 a1) '(:k1 . 10))- 它没用.
我试图将一个项目添加到关联数组的开头.我认为最好的方法是使用array_merge,但我有一些奇怪的后果.我从mysql数据库中获取了产品的id和名称,并将其作为关联数组返回,如此(不是实际数据返回,而是此问题的示例数据,表示数据的大致外观):
$products = array (1 => 'Product 1', 42 => 'Product 42', 100 => 'Product 100');
Run Code Online (Sandbox Code Playgroud)
这将被发送到一个html助手,以创建一个将键与值相关联的下拉列表,并将数组项的值设置为下拉选择控件中的文本.我需要第一个项目是"请选择",键为0,所以我这样做:
$products = array_merge(array(0 => "Select a product" ), $products);
Run Code Online (Sandbox Code Playgroud)
结果数组如下所示:
array(
0 => 'Select a product',
1 => 'Product 1',
2 => 'Product 42',
3 => 'Product 100'
);
Run Code Online (Sandbox Code Playgroud)
当我真正想要的是不丢失关联数组的键.有人告诉我,你可以适当地在我尝试的方式使用array_merge与关联数组,但是,我相信,因为我的键是整数,它不是处理数组作为一个真正的关联数组,并如上图所示对其进行压缩.
问题是:为什么array_merge函数会更改项目的键?我可以阻止这样做吗?或者还有另一种方法可以让我完成我想要做的事情,在数组的开头添加新项目吗?
php ×5
arrays ×4
javascript ×2
array-merge ×1
array-reduce ×1
collections ×1
dictionary ×1
elisp ×1
hashtable ×1
java ×1
lisp ×1
merge ×1
oracle ×1
oracle10g ×1
plsql ×1
pluck ×1
sorted ×1