Req #76827 [Com]: Introduce a new function struncate or some such

From: Date: Fri, 31 Aug 2018 11:09:20 +0000
Subject: Req #76827 [Com]: Introduce a new function struncate or some such
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-216836@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=76827&edit=1

 ID:                 76827
 Comment by:         zjz at zjz dot name
 Reported by:        zjz at zjz dot name
 Summary:            Introduce a new function struncate or some such
 Status:             Open
 Type:               Feature/Change Request
 Package:            Performance problem
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Strictly speaking, it doesn't have to be a reference to be passed to struncate at all, since
str->len = len; or some similar code can do the job anyway, regardless of whether the parameter
is a reference or not.

But I'd like to suggest the parameter in the new function to be a reference, otherwise it
can't reflect the fact that the parameter value will be changed(in other words, it's
length would be changed), and would make the user confused.


Previous Comments:
------------------------------------------------------------------------
[2018-08-31 10:47:45] zjz at zjz dot name

I think it's far more effient than substr when the new string is still very long, after being
truncated, isn't it?

------------------------------------------------------------------------
[2018-08-31 10:39:09] zjz at zjz dot name

The general idea I suggested is directly modifying the **len** value of the str:

TBC, I am not familar with PHP source code, so this code I write here can't be the exactly
formal code, but simply demostrates the general idea I meant:

PHP_FUNCTION(struncate)
{
	zend_string* str;
	zend_long    len;
	int argc = ZEND_NUM_ARGS();

	ZEND_PARSE_PARAMETERS_START(...)
		Z_PARAM_STR(str)
		Z_PARAM_LONG(len)
	ZEND_PARSE_PARAMETERS_END();

	str->len = len;
}

------------------------------------------------------------------------
[2018-08-31 10:34:01] zjz at zjz dot name

Well. Let me try to look into the C code and then gives some code example to explain what I said.

------------------------------------------------------------------------
[2018-08-31 09:56:40] zjz at zjz dot name

$str = substr($str, 0 , -1); first makes a new string by the truncated length, and then frees the
original string, which seems to me uncessary.

As to why I suggest this new function with a reference parameter, **I didn't AT ALL try to mean
that referencing itself is more effient**, but I just meant in the new function, **something magic**
can be done in C code in the new function, so that the original string can be **directly**
truncated, without making a new truncated string in another place at first, and then freeing the
original one, which is uncessary.

------------------------------------------------------------------------
[2018-08-31 09:08:10] spam2 at rhsoft dot net

you miss the point:

a new function with a reference would gain *nothing* which couldn't be done in substr() too
without clutter the function list

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=76827


--
Edit this bug report at https://bugs.php.net/bug.php?id=76827&edit=1


Thread (15 messages)

« previous php.bugs (#216836) next »