如何将变量存储到数组里面?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将变量存储到数组里面?相关的知识,希望对你有一定的参考价值。
为什么
定义数组:
unsigned char datX[10],datY[10];
在程序里面:
datX[0]=数据;
datY[0]=数据;
......
可以把数据存储到数组里面。
当我这样写的时候却不能把数据存储到数组里面:
定义数组:
unsigned char datX[10],datY[10];
定义变量:
unsigned char SS;
在INT0中断函数里面:
datX[SS]=数据;
datY[SS]=数据;
SS++;
每次发生外部中断的时候却不能把数据存储到数组里面
1、下面输出结果是"jim",而不是"tom",
是因为数组中保存的都是指向json对象a的地址,
dd[0],dd[1],dd[2],dd[3]对象指向的内存地址相同,
当修改其中一个dd[0]的属性值的时候,数组所有元素指向的对象属性值都改变了。
var dd = [];var a = "cname": "tom" ;for (var i = 0; i <4; i++) dd[i] =a;dd[0].cname = "jim";alert(dd[2].cname);2、下面输出结果是0,而不是1,
是因为数组元素dd[0],dd[1],dd[2],dd[3]对应的内存地址都不同,互不干扰。
var dd = [];var a = 0;for (var i = 0; i <4; i++) dd[i] =a;dd[0]=1;alert(dd[2]);
希望对你有帮助! 参考技术A 你的数组不是全局变量吧。
中断一结束,就会释放掉。追问
数组是定义的全局变量
参考技术B 难道是因为SS没赋初始值?追问不是,我赋的初值是0,而且我也加了volatile试了 也不行
追答加了volatile还不行,我就很纳闷了。难道是这个函数没执行?
另外我还想到一个可能性,可能执行的时候,要赋值的那个“数据”已经被清空了。
可以调试运行吗?不行的话在这个前后加LOG试试,直接把LOG信息存文件里面也行。
确认下函数执行的时候,SS、数组、“数据”的值是否正常。按道理是不可能赋值失败的,只可能赋值弄错了的。
不会的 数据不可能清空 我也写个固定的值存储到数组里试了试 也是不行
追答那很可能没运行到这里吧。程序的思路没有问题,还是写LOG看一下吧。
这只有你自己能调试了。
跟指针和中断扯上关系的地方,错误会比较难找,耐心一点吧。通过LOG记录的执行路径和数据,总能找到出现异常的位置。
如何将数组存储到php中的会话变量中
【中文标题】如何将数组存储到php中的会话变量中【英文标题】:How to store an array into a session variable in php 【发布时间】:2013-09-01 04:24:41 【问题描述】://从问题表中返回10个问题
$result = mysqli_query($con,"SELECT question FROM questions ORDER BY rand() LIMIT 10' ");
while($row = mysqli_fetch_row($result))
$que[]=$row[0];
现在我需要将整组$que[]
存储在会话变量中。 (即 10 个问题)
类似的东西
$_SESSION['question'] = $que[];
$my_array[] = $_SESSION['question'];
这样$my_array[0]
返回第一个问题,$my_array[1]
返回第二个问题等等。
(感谢提前帮助)
【问题讨论】:
只是$_SESSION['question'] = $que;
没有[]
【参考方案1】:
分配
$_SESSION['question'] = $que;
print_r($_SESSION['question'][0]);
会给你第一个问题。
【讨论】:
使用 echo 代替 print_r 会有什么不同吗?【参考方案2】:您几乎是正确的,添加到数组时只需要[]
。
$_SESSION['question'] = $que;
确保您有一个会话首先进行,如果一个会话尚不存在,将其放在脚本顶部将启动一个会话:
if( !isset( $_SESSION ) )
session_start();
把它拉回来:
$array = $_SESSION['question']; //Assigns session var to $array
print_r($array); //Prints array - Cannot use echo with arrays
最终添加
要遍历数组,通常可以使用 for 或 foreach。 For 语句只有在您的数组键是递增的(0、1、2、3 等)且没有任何间隙时才能正常工作。
for( $x = 0, $max = count($array); $x < $max; ++$x )
echo $array[$x];
foreach( $array as &$value )
echo $value;
两者都是为了性能而编写的。非常重要的是要知道在使用引用时(&$value
,注意 &),如果您编辑引用,原始值会发生变化。当您不通过引用使用时,它会创建该值的副本。比如:
//Sample Array
$array = array( '0' => 5, '1' => 10 );
//By Reference
foreach( $array as &$value )
$value += 2; //Add 2 to each value
echo $value; //Echos 7 and 12, respectively
print_r( $array ); //Now equals array( '0' => 7, '1' => 12 )
//Normal Method
foreach( $array as $value )
$value += 2; //Add 2 to each value
echo $value; //Echos 7 and 12, respectively
print_r( $array ); //Still equals array( '0' => 5, '1' => 10 )
引用更快,但如果您打算修改值同时保持原始数组不变,则不会。
【讨论】:
我现在如何访问存储在会话中的那些值? 哦,数组没有回声!实际上我希望打印这些元素 $my_array[0], $my_array[1], $my_array[2]....$my_array[10] ?那么如何通过 printf 实现呢?? 当我尝试简单地打印它时显示数组到字符串转换错误! 更新了我的答案,除非您对原始问题有疑问,否则我认为您可能想搜索 Stack Overflow 以获取更多信息,或提出新问题。【参考方案3】:使用
session_start();
$_SESSION['question'] = $que;
&que = array(an array of your 10m question s);
当你想在另一个页面上调用它来获得你的问题的队列时,使用
while (list($key, $value) = each($_SESSION))
#Echo the questions using $key
echo "Here is a list of your questions";
echo "<br/>";
while (list($key2, $value2) = each($_SESSION))
#$value2 show's name for the indicated ID
#$key2 refers to the ID
echo "<br/>";
echo "Question: ".$value2." ";
echo "<br/>";
echo "<br/>";
或者你也可以使用
print_r;
【讨论】:
以上是关于如何将变量存储到数组里面?的主要内容,如果未能解决你的问题,请参考以下文章
java - 如何使用java将sql结果集字段存储到单独的数组变量中?
Python - 如何按定义的顺序将类变量存储到数组中[重复]