php foreach输出数组只输出元素的第一个字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php foreach输出数组只输出元素的第一个字符相关的知识,希望对你有一定的参考价值。

php foreach输出数组只输出元素的第一个字符 例如数组里面的元素 array(php自学,JSP入门,.)
但是用foreach输出的是 pj即是每个元素的第一个字母

foreach($list as $a)
$a 代表的是数组中的值。如果需要取得下标应该用
foreach($list as $key=>$a)
$key 代表了数组中的下标。$a 代表的是数组的值
循环输出下标的语句应该是
foreach($list as $key=>$a)

echo $key;

这样就是输出了下标。
参考技术A foreach($arr as $e)
echo $e[0];

字符串的【0】即是第一个字符
参考技术B 那是因为你只取到了一维数组
接着foreach的话只取第一个字符

Foreach 只返回第一个值

【中文标题】Foreach 只返回第一个值【英文标题】:Foreach is only returning the first value 【发布时间】:2020-11-26 19:24:21 【问题描述】:

我正在尝试将所有元素输出到一个列表中,但 foreach 循环只输出第一个元素,并且输出的次数与元素数量相同

如果我尝试按如下方式显示任何元素session.books[5].name,那么我会得到想要的元素,而不是第一个

//...
List 
  ForEach(self.session.books)  book in
      Text(book.name)
  

//...

//Model:
struct Book: Identifiable 
    var id: String = UUID().uuidString
    var name: String


//This way I fetch books:
func getBooks() 
        db.collection("books").addSnapshotListener  (querySnapshot, error) in
          guard let documents = querySnapshot?.documents else 
            print("No documents")
            return
          

          self.books = documents.map  queryDocumentSnapshot -> Book in
            let data = queryDocumentSnapshot.data()
            let name = data["name"] as? String ?? ""

            return Book(id: .init(), name: name)
          
        
      

【问题讨论】:

【参考方案1】:

你可以使用

List 
  ForEach(self.session.books.indices, id: \.self)  index in
      Text(self.session.books[index].name)
  

但您的图书的 id 的唯一性似乎有问题。

【讨论】:

我更新了问题,也许现在很清楚id 有什么问题? 现在很清楚了。您所有的 ID 都只是空字符串。 @Jessy,谢谢。在模型中将var id: String = UUID().uuidString 替换为var id: UUID 为什么 UUID 会是可变的?

以上是关于php foreach输出数组只输出元素的第一个字符的主要内容,如果未能解决你的问题,请参考以下文章

Java中foreach为啥不能给数组赋值

foreach 是不是保证在 php 中以数组顺序进行迭代?

foreach 是不是保证在 php 中以数组顺序进行迭代?

php输出数组第一个键

foreach 循环仅输出数组中的最后一个元素

PHP foreach输出键值,他是从0开始的,我想他加1输出该怎么写