我没有很多C#的经验,但我习惯在PHP中使用关联数组.
我在C#中看到List类和数组可用,但我想关联一些字符串键.
处理这个问题最简单的方法是什么?
谢谢!
如果我有一个JS关联数组,它来自我收集的实际上是一个对象,并且我希望删除一个元素,使用delete myArr[someId]将元素设置为undefined,而splice将根本不起作用...那么什么是替代如果我想删除一个元素(而不是将其设置为undefined),则为关联数组
在插入PHP的字符串索引数组元素(5.3.3,Win32)时,可能会出现以下行为:
$ha = array('key1' => 'Hello to me');
print $ha['key1']; # correct (usual way)
print $ha[key1]; # Warning, works (use of undefined constant)
print "He said {$ha['key1']}"; # correct (usual way)
print "He said {$ha[key1]}"; # Warning, works (use of undefined constant)
print "He said $ha['key1']"; # Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[ key1 ]"; # Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[key1]"; # !! correct (How Comes?)
Run Code Online (Sandbox Code Playgroud)
无意中,最后一行似乎是正确的PHP代码.有什么解释吗?这个功能可以信任吗?
我有一个名为的以下关联数组 $data
Array
(
[0] => Array
(
[transaction_user_id] => 359691e27b23f8ef3f8e1c50315cd506
[transaction_no] => 19500912050218
[transaction_total_amount] => 589.00
[transaction_date] => 1335932419
[transaction_status] => cancelled
)
[1] => Array
(
[transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
[transaction_no] => 36010512050819
[transaction_total_amount] => 79.00
[transaction_date] => 1336476696
[transaction_status] => cancelled
)
[2] => Array
(
[transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
[transaction_no] => 19020512050820
[transaction_total_amount] => 299.00
[transaction_date] => 1336476739
[transaction_status] => cancelled
)
[3] => Array
(
[transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
[transaction_no] => 27050512050821
[transaction_total_amount] => 79.00
[transaction_date] => 1336476927 …Run Code Online (Sandbox Code Playgroud) 在PHP中,假设你有一个像这样的关联数组:
$pets = array(
"cats" => 1,
"dogs" => 2,
"fish" => 3
);
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到价值最低的钥匙?在这里,我一直在寻找cats.
是否有一些内置的PHP函数,我错过了这个吗?如果有一个解决方案可以解决几个相同的值,如下所示:
$pets = array(
"cats" => 1,
"dogs" => 1,
"fish" => 2
);
Run Code Online (Sandbox Code Playgroud)
上面,我不介意它是否输出; cats或dogs.
提前致谢.
Ruby on rails是否具有关联数组?
例如:
a = Array.new
a["Peter"] = 32
a["Quagmire"] = 'asdas'
Run Code Online (Sandbox Code Playgroud)
在Ruby中创建这样的数组结构最简单的方法是什么?
我正在实现一种将一组数据传输到可编程加密狗的方法.加密狗基于智能卡技术,可以在内部执行任意代码.输入和输出数据作为二进制块传递,可通过输入和输出指针访问.
我想使用关联数组来简化数据处理代码.一切都应该这样:
首先是主机应用程序:
// Host application in C++
in_data["method"] = "calc_r";
in_data["id"] = 12;
in_data["loc_a"] = 56.19;
in_data["loc_l"] = 44.02;
processor->send(in_data);
Run Code Online (Sandbox Code Playgroud)
接下来加密狗内的代码:
// Some dongle function in C
char* method_name = assoc_get_string(in_data, "method");
int id = assoc_get_int(in_data, "id");
float loc_a = assoc_get_float(in_data, "loc_a");
float loc_l = assoc_get_float(in_data, "loc_l");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是关于加密狗部分的功能.是否有C代码或库来实现如上所述的关联数组行为?
例:
list($fruit1, $fruit2) = array('apples', 'oranges');
Run Code Online (Sandbox Code Playgroud)
上面的代码当然可行,但代码如下:
list($fruit1, $fruit2) = array('fruit1' => 'apples', 'fruit2' => 'oranges');
Run Code Online (Sandbox Code Playgroud)
得到: Notice: Undefined offset: 1 in....
有没有办法以某种方式用列表来引用命名键list('fruit1' : $fruit1),你有没有看到这样的计划用于将来的版本?
(这个问题使用PHP作为上下文,但不仅限于PHP.例如,任何内置哈希的语言也是相关的)
我们来看看这个例子(PHP):
function makeAFredUsingAssoc()
{
return array(
'id'=>1337,
'height'=>137,
'name'=>"Green Fred");
}
Run Code Online (Sandbox Code Playgroud)
与:
class Fred
{
public $id;
public $height;
public $name;
public function __construct($id, $height, $name)
{
$this->id = $id;
$this->height = $height;
$this->name = $name;
}
}
function makeAFredUsingValueObject()
{
return new Fred(1337, 137, "Green Fred");
}
Run Code Online (Sandbox Code Playgroud)
方法#1当然更简洁,但它可能很容易导致错误,例如
$myFred = makeAFredUsingAssoc();
return $myFred['naem']; // notice teh typo here
Run Code Online (Sandbox Code Playgroud)
当然,有人可能会争辩说$myFred->naem同样会导致错误,这是事实.然而,正式课程对我来说感觉更加僵硬,但我无法证明这一点.
使用每种方法的优点/缺点是什么?人们何时应该使用哪种方法?
如何将关联数组作为参数传递给函数?这在巴什有可能吗?
以下代码未按预期工作:
function iterateArray
{
local ADATA="${@}" # associative array
for key in "${!ADATA[@]}"
do
echo "key - ${key}"
echo "value: ${ADATA[$key]}"
done
}
Run Code Online (Sandbox Code Playgroud)
将关联数组传递给像普通数组这样的函数不起作用:
iterateArray "$A_DATA"
Run Code Online (Sandbox Code Playgroud)
要么
iterateArray "$A_DATA[@]"
Run Code Online (Sandbox Code Playgroud)